Po szybkim spojrzeniu na stronę referencyjną dla , Mógłbym to wymyślić:
@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
)
Aktualizacja: lepiej byłoby przekazać folder początkowy jako parametr, aby sam skrypt mógł zostać umieszczony w dowolnym miejscu i nie ryzykował zmiany nazwy.
@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
)
Wyjaśnienie:
@echo off dzięki temu unika się każdego polecenia zapisywanego na konsoli.
setlocal EnableDelayedExpansion jest to potrzebne, aby a zmienna, aby faktycznie zwiększyć.
set a=1 tworzymy zmienną licznika o nazwie a i ustaw jego wartość początkową na 1.
for /f pętla na liście nazw plików.
tokens=1,2 delims=. nazwa pliku zostanie podzielona, gdy a . napotkany. Interesują nas dwa pierwsze żetony wynikające z tej operacji. Uwaga: oczekuje się, że nazwy plików będą nie zawierają kropkę, z wyjątkiem basename i rozszerzenia.
%%G to nazwa pierwszego tokena (domyślnie jest to drugi) %%H ).
in ('dir /b /s /A:-D %1') zapętlić wyniki dir polecenie, które wyświetla listę plików w katalogu przekazanym jako parametr %1 z następującymi opcjami: /b czyste wyjście, /s uwzględnij wyniki z podkatalogów, /A:-D wyświetlaj tylko pliki, a nie nazwy folderów.
ren "%%G.%%H" "A!a!.%%H" zmień nazwę pliku ( %%G.%%H odtwarza oryginalną nazwę pliku) na stałą A plus zmienna a bieżąca wartość plus oryginalne rozszerzenie %%H.
set /a a+=1 zwiększa zmienną licznika.