Nach einem kurzen Blick auf die Referenzseite von for könnte ich Folgendes finden:
@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 )
Update: Es ist besser, den ursprünglichen Ordner als Parameter zu übergeben, damit das Skript selbst an einer beliebigen Stelle platziert werden kann und keine Gefahr besteht, dass es selbst umbenannt wird.
@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 )
Erläuterung:
@echo off
Dadurch wird vermieden, dass jeder Befehl in die Konsole geschrieben wird.
setlocal EnableDelayedExpansion
Dies ist erforderlich, damit die a
Variable tatsächlich zunimmt.
set a=1
Wir erstellen eine aufgerufene Zählervariable a
und setzen ihren Anfangswert auf 1
.
for /f
Schleife gegen eine Liste von Dateinamen.
tokens=1,2 delims=.
Der Dateiname wird geteilt, wenn a gefunden .
wird. Wir sind an den ersten beiden Token interessiert, die sich aus dieser Operation ergeben. Hinweis: es wird erwartet, dass die Dateinamen nicht nicht enthalten einen Punkt, außer zwischen dem Basisnamen und der Erweiterung.
%%G
ist der Name des ersten Tokens (impliziert, dass das zweite Token sein wird %%H
).
in ('dir /b /s /A:-D %1')
Schleife über die Ergebnisse des dir
Befehls, der die Dateien in dem Verzeichnis auflistet, die als Parameter %1
mit den folgenden Optionen übergeben werden: /b
saubere Ausgabe, /s
Ergebnisse von Unterverzeichnissen einschließen, /A:-D
nur Listendateien und keine Ordnernamen.
ren "%%G.%%H" "A!a!.%%H"
Benennen Sie den Dateinamen ( %%G.%%H
rekonstruiert den ursprünglichen Dateinamen) in eine Konstante A
plus den a
aktuellen Wert der Variablen plus die ursprüngliche Erweiterung um %%H
.
set /a a+=1
erhöht die Zählervariable.