После быстрого просмотра справочной страницы для 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
увеличивает значение счетчика.