Benennen Sie mehrere Dateien in einem Verzeichnis mithilfe des Stapel-Skripts um

7

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%     
Jack Mc Lauren 30.08.2014, 14:00
quelle

3 Antworten

12

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 ? .

    
Landys 30.08.2014, 14:17
quelle
7

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.

    
dbenham 30.08.2014 15:33
quelle
0

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%     
Whome 30.08.2014 14:18
quelle

Tags und Links