(Win10) W pliku wsadowym, jak rekurencyjnie zmieniać nazwy plików nazwy w folderze? Nie rozszerzenie .
na przykład
Pliki do zmiany nazwy: heavy.doc, bright.jpg, fast.docx, quiet.png itp
Zmień nazwę na: A1. *, A2. *, A3. *, A4. *, Itd. (Gdzie. * Zachowuje oryginalny ext)
Staje się: A1.doc, A2.jpg, A3.docx, A4.png itp
Dzięki!
batch-file
rename
filenames
recursive
narrator dru
źródło
źródło
Odpowiedzi:
Po szybkim spojrzeniu na stronę referencyjną dla , Mógłbym to wymyślić:
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.
Wyjaśnienie:
@echo off
dzięki temu unika się każdego polecenia zapisywanego na konsoli.setlocal EnableDelayedExpansion
jest to potrzebne, abya
zmienna, aby faktycznie zwiększyć.set a=1
tworzymy zmienną licznika o nazwiea
i ustaw jego wartość początkową na1
.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ć wynikidir
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 zmiennaa
bieżąca wartość plus oryginalne rozszerzenie%%H
.set /a a+=1
zwiększa zmienną licznika.źródło