Ich habe ungefähr 1000 Bilder und sie haben Namen wie "IMG-12223". Ich möchte sie in 1 2 3 4 ... 1000 umbenennen. Wie kann ich das tun? Ich habe ein Batch-Skript geschrieben, das die Dateien auflistet, aber ich weiß nicht, wie ich jede Datei umbenennen soll. z.B. Benennen Sie das erste Bild mit dem Namen "IMG-12223" in 1, das zweite Bild mit dem Namen "IMG-23441" in 2 und so weiter ...
um %Vor%Hier ist das Skript. Legen Sie das Skript einfach in Ihren Ordner und führen Sie es aus.
%Vor%Wenn Sie die Erweiterungen beibehalten möchten, dh "IMG-12223.jpg", "IMG-12224.jpg" usw. in "1.jpg", "2.jpg" usw. umbenennen, können Sie Folgendes verwenden Skript.
%Vor%[ Update ] Hier sind Erklärungen für die in Jacks Kommentar erwähnten Zeilen.
setlocal EnableDelayedExpansion
Im Allgemeinen möchten wir, dass die Variable a
eine verzögerte Erweiterung ist, wenn sie ausgeführt wird, aber nicht, dass die Zeile gelesen wird. Ohne sie kann die Variable a
nicht ihren erhöhten Wert erhalten, sondern immer 1.
Details zu EnableDelayedExpansion finden Sie in der Antwort Ссылка .
for /f "delims=" %%i in ('dir /b *.jpg')
Hier dir
mit /b
Option, listet nur Dateinamen aller JPG-Dateien auf.
Die for
-Schleife durchläuft alle jpg-Dateien und benennt sie um.
Da für die Option delims
das Standardtrennzeichen ein Leerzeichen ohne die Option delims=
ist, schlägt es bei den Bilddateien mit Leerzeichen in den Dateinamen fehl. I.E. Für eine Bilddatei namens "img with spaces.jpg", ohne die Option, ist der Wert von %%i
"img", aber nicht der ganze Name "img with spaces.jpg", was falsch ist.
Für for
loop finden Sie auf der Seite Ссылка .
if not "%%~ni"=="%~n0"
Ich habe es in if not "%%~nxi"=="%~nx0"
geändert, um genauer zu sein. Und die beigefügten Codes wurden aktualisiert.
Es wird tatsächlich verwendet, um zu vermeiden, die Bat-Datei selbst umzubenennen. Wenn wir die Umbenennung nur auf "jpg" -Dateien beschränken, wird die Zeile nicht benötigt.
%%~nxi
ist der Dateiname mit der Erweiterung für jede durchlaufene Datei. Und %~nx0
ist die laufende Bat-Datei mit der Erweiterung. Einzelheiten finden Sie auf der Seite DOS BAT-Datei, die dem Unix-Befehl basename entspricht ? .
Es ist kein Batch-Skript erforderlich. Ein einfacher Liner von der Kommandozeile aus kann die Aufgabe erledigen: -)
Ich benutze DIR / B, um die Liste der Dateien zu generieren, die an FINDSTR weitergeleitet werden, um die Dateien zu nummerieren, die alle mitn FOR / F zum Analysieren des Ergebnisses und zum Ausführen der Umbenennung versehen sind.
%Vor%Verdoppeln Sie die Prozente, wenn Sie den Befehl in ein Stapelscript einfügen möchten.
Versuchen Sie das, Sie haben ein paar Namevalues in einer Textdatei, dann Schleifenwerte und machen Sie die Magie. Namevalues sind durch Leerzeichen getrennt. Dies ermöglicht Ihnen, alte- & gt; neue Dateinamen entsprechend abzubilden. Oder Sie behalten IDX + 1-Zähler und verwenden sie für neue Dateinamen.
keyvalue.bat
%Vor%keyvalue.txt
%Vor%Tags und Links rename file batch-file