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.