После быстрого просмотра справочной страницы для 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 this позволяет избежать записи каждой команды на консоль.
setlocal EnableDelayedExpansion это необходимо для того , чтобы переменная фактически увеличить.
set a=1 мы создаем переменную-счетчик с именем a и устанавливаем ее начальное значение равным 1 .
цикл for /f против списка имен файлов.
tokens=1,2 delims=. имя файла будет разделено, когда . встречается. Мы заинтересованы в первых двух токенах, полученных в результате этой операции. Примечание: ожидается, что имена файлов не содержат точку, кроме как между базовым именем и расширением.
%%G - это имя первого токена (подразумевается, что второй будет %%H).
в цикле in ('dir /b /s /A:-D %1') просматриваются результаты команды dir , в которой перечислены файлы в каталоге, переданные в качестве параметра %1 со следующими параметрами: /b clean output, /s включают результаты из подкаталогов, /A:-D только список файлов, а не имена папок.
ren "%%G.%%H" "A!a!.%%H" переименуйте имя файла (%%G.%%H восстанавливает исходное имя файла) в константу A плюс текущее значение переменной a плюс оригинальное расширение %%H
set /a a+=1 увеличивает значение счетчика.