У меня есть несколько сотен * .mp3 файлов в c: \ files. Там есть все мыслимые имена файлов, такие как
- milad.mp3 (хорошее поведение)
- эй, ты.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).
Проблема, очевидно, в имени файла. Как это можно исправить? Есть идеи? Я был бы очень признателен за любую помощь.