Я пытаюсь добавить префикс для всех имен файлов в папке.
После нескольких дней поиска в интернете я действительно нашел что-то, что почти идеально работает:
echo Please specify fileprefix
echo Your Choise??
set /p pre= ^
for %%i in (*.txt) do ren %%i "%pre%"%%i
Проблема в том, что если префикс начинается с символа, который находится в алфавитном порядке после первого символа имени файла, то первый файл переименовывается дважды.
Вот вывод при попытке переименовать три файла 1.txt
, 2.txt
и 3.txt в тестовой папке:
Your Choise??
pre
D:\rntest>ren 1.txt "pre"1.txt
D:\rntest>ren 2.txt "pre"2.txt
D:\rntest>ren 3.txt "pre"3.txt
D:\rntest>ren pre1.txt "pre"pre1.txt
Оставив меня с тремя файлами pre2.txt
, pre3.txt
и prepre1.txt
Кажется, проблема в том, что первые файлы сортируются автоматически по алфавиту в процессе. Таким образом, первый файл перемещается в нижнюю часть и обрабатывается снова. Однако я понятия не имею, так ли это на самом деле.
Я попытался поиграться с отладкой, чтобы переименовать файл снова после первоначального переименования.
Вот код
for %%i in ("%pre%""%pre%"*) do ren %%i %%i:~3%
Кажется, это идентифицирует правильное (с двойным префиксом) имя файла, но оно ничего не делает с ним (имя файла не существует или уже существует идентичное имя файла). Предполагалось удалить первые три символа имени файла, чтобы получить правильный результат.
Я просто подумал, что должен быть какой-то лучший / более простой способ сделать это без необходимости проверки ошибок и исправления.