我在 c:\files 中有数百个 *.mp3 文件。那里有所有可以想象的文件名,例如
- milad.mp3(表现良好)
- 嘿 you.mp3(文件名中的空格)
- systemofadown.mp3(长文件名)
- howdy(1).mp3(文件名中的括号)
以及最后三个条件的任意组合。我想将文件重命名为 001-test.mp3, 002-mp3, ... 哪个文件取哪个名称都没有关系。已经编写了一个批处理文件来进行重命名。这是我的代码(添加了行号):
01 rem @echo off
02 cls
03 set _number=%1
04 lfnfor on
05
06 :F1TO10
07 IF NOT EXIST *.mp3. goto end
08 if %_number% gtr 9 goto F10TO100
09 for /f %%a IN ('dir /b *.mp3') do rename %%~na.mp3 00%_number%-test.mp4
10 set /a _number +=1
11 goto F1TO10
12
13 :F10TO100
14 IF NOT EXIST *.mp3. goto end
15 if %_number% gtr 99 goto F100TO1000
16 for /f %%a IN ('dir /b *.mp3') do rename %%~na.mp3 0%_number%-test.mp4
17 set /a _number +=1
18 goto F10TO100
19
20 :F100TO1000
21 IF NOT EXIST *.mp3. goto end
22 if %_number% gtr 999 goto end
23 for /f %%a IN ('dir /b *.mp3') do rename %%~na.mp3 %_number%-test.mp4
24 set /a _number +=1
25 goto F100TO1000
26
27 :end
28 for /f %%a IN ('dir /b *.mp4') do rename %%~na.mp4 %%~na.mp3
29 echo Done
此代码适用于表现良好的文件名(即没有空格、没有括号、长度不超过 8 个字符)。但是,如果我什至有一个文件名不正确的文件,脚本就会中断(它会无限循环,直到我用 Ctrl-C 停止它)。
问题显然是文件名问题。如何解决这个问题?有任何想法吗?我将不胜感激任何帮助。