批处理高手帮忙解释两个问题

1:FOR /F变量中的"DELIMS="和"DELIMS= "还有"DELIMS=*"有什么区别??

2:有些变量中的%有时写成!为什么呢?比如:
setlocal ENABLEDELAYEDEXPANSION
for /f "delims=" %%i in ('dir/b *.jpg') do (
set a=%%~ni
ren "%%i" "!a:~0,-2!.jpg")

请详细解释上面的代码!!!

第一个问题314ccp有回答,我就不再说了。

setlocal ENABLEDELAYEDEXPANSION
for /f "delims=" %%i in ('dir/b *.jpg') do (
set a=%%~ni
ren "%%i" "!a:~0,-2!.jpg")

1、setlocal ENABLEDELAYEDEXPANSION
变量延迟[凡是要在for语句后,再次调用你原先定义的变量,你就要用变量延迟。]
2、for /f "delims=" %%i in ('dir/b *.jpg') do (
for /f [循环]
delims=[变量的分隔符]
dir [DOS操作系统用来查看磁盘中文件的命令]
/b 使用空格式(没有标题信息或摘要)。[dir的参数,可以使用dir/?来查看。]
*.jpg [后缀名为.jpg的所有文件]
do ( [动作,如果满足条件]
3、set a=%%~ni
[给变量a赋值为'dir/b *.jpg'中的文件名(不包括后缀)]
4、ren "%%i" "!a:~0,-2!.jpg")
ren [重命名]
"%%i" "!a:~0,-2!.jpg" [*.jpg的名字改为文件名中从第一个字符到倒数第2个字符,如果是~0,-3就是0到倒数第3个,如果是~0,-1就是不做改变]
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-01-04
1、分别是表示没有分隔符,以空格为分隔符,以*为分隔符~

2、http://hi.baidu.com/7764sky/blog/item/b47d6e10771a5d04203f2efa.html

虽然是粘贴,但怕我说的不够具体,你还是去看看专家的吧`~~