После быстрого просмотра справочной страницы для for, я мог бы придумать это:
@echo off & setlocal EnableDelayedExpansion set a=1 for /f "tokens=1,2 delims=." %%G in ('dir /b /s /A:-D') do ( ren "%%G.%%H" "A!a!.%%H" set /a a+=1 )
Обновление: было бы лучше передать исходную папку в качестве параметра, чтобы сам скрипт мог быть размещен где угодно и не рисковал переименовываться сам.
@echo off & setlocal EnableDelayedExpansion set a=1 for /f "tokens=1,2 delims=." %%G in ('dir /b /s /A:-D %1') do ( ren "%%G.%%H" "A!a!.%%H" set /a a+=1 )
Объяснение:
@echo off
это позволяет избежать записи каждой команды на консоль.
setlocal EnableDelayedExpansion
это необходимо для a
фактического увеличения переменной.
set a=1
мы создаем переменную счетчика с именем a
и устанавливаем ее начальное значение 1
.
for /f
цикл против списка имен файлов.
tokens=1,2 delims=.
имя файла будет разделено при .
обнаружении. Мы заинтересованы в первых двух токенах, полученных в результате этой операции. Примечание: ожидается, что имена файлов не содержат точку, кроме как между базовым именем и расширением.
%%G
это имя первого токена (подразумевается, что второй будет %%H
).
in ('dir /b /s /A:-D %1')
Зацикливайте результаты dir
команды, в которой перечислены файлы в каталоге, переданном в качестве параметра, %1
со следующими параметрами: /b
очистить вывод, /s
включить результаты из подкаталогов, /A:-D
только файлы списка, а не имена папок.
ren "%%G.%%H" "A!a!.%%H"
переименуйте имя файла ( %%G.%%H
восстанавливает исходное имя файла) в константу A
плюс a
текущее значение переменной плюс оригинальное расширение %%H
.
set /a a+=1
увеличивает переменную счетчика.