|
|
发表于 2011-5-30 22:15:58
|
显示全部楼层
本帖最后由 tmplinshi 于 2011-5-31 08:10 编辑
5# 601997526
写那么复杂,主要考虑了两点:
1. 考虑了半角 ! 号。
2. call 的效率低。
用好几个 for 都比一个 call 的速度快。call 的次数很多时,速度差异特别明显。
你的代码有两个会出错的地方:
1. for /r 会造成文件被重命名多次(测试环境:Windows XP SP2)
(之前没仔细看,你的代码虽然造成了文件被重命名多次,不过最终结果并不会出错。)
测试代码:- @echo off
- SetLocal EnableDelayedExpansion
- for /r %%a in (*.jpg) do (
- set /a n += 1
- echo "%%~nxa" → "!n!.jpg"
- ren "%%a" "!n!.jpg"
- )
- pause
复制代码 文件夹内只有“1 2.jpg”和“3 4.jpg”两个文件。运行结果:
"3 4.jpg" → "1.jpg"
"1 2.jpg" → "2.jpg"
"1.jpg" → "3.jpg"
"2.jpg" → "4.jpg"
请按任意键继续. . .
文件被重命名了两次。这种错误发生在文件名含有空格时。(补充:短名与原名不同时也会被重命名多次)
2. call :x %%~fsi
如果路径中含有符号“&”,且没有空格,例如“c:\1&2\3.txt”,这个路径的短名还是“c:\1&2\3.txt”。 |
|