Batch:wie benennt man Dateien in großen Mengen um (kommt näher)?
-
12-11-2019 - |
Frage
Ich habe Leute gesehen, die das in Perl gemacht haben, aber ich frage mich, ob es eine Möglichkeit gibt, es per Batch zu machen?Es ist in Windows integriert, daher denke ich, dass es nützlicher wäre zu wissen, wie man das mit einem Batch-Skript macht.Es erfordert keine Installation auf einem Computer.
Ein Beispiel für einen Eingabenamen: myFile_55
Ein Beispiel für ein Ausgabemuster:ändern myFile
zu picture
und reduziere die Anzahl um 13.Eine Beispielausgabe: picture_42
.
Wie würden Sie das angehen?Ich kenne einen Batch-Befehl zum Umbenennen:
ren myFile_55 picture_42
.
Also, wenn ich eine Datei namens habe renamer.bat
, Ich kann Folgendes hinzufügen:
for /r %%x in (%1) do ren "%%x" %2
.
Dann kann ich diesen Befehl eingeben:
renamer.bat myfile* picture*
.
Ich weiß jedoch nicht, wie ich die Zahlen reduzieren soll.
Keine korrekte Lösung
Andere Tipps
Sie können wahrscheinlich den ursprünglichen Dateinamen durch eine for-Schleife führen und den Namen und die Nummern extrahieren, die Zahlen berechnen und dann mit dem neuen Namen und der neuen Nummer wieder einstecken.Solange das Dateinamenformat ist name_number
sie können dies verwenden:
REM Allow for numbers to be iterated within the for-loop i.e. the i - z
SETLOCAL ENABLEDELAYEDEXPANSION
SET i=0
SET z=13
SET newName=picture
SET workDir=C:\Path\To\Files
REM Given that filenames are in the format of 'Name_number', we're going to extract 'number
REM and set it to the i variables, then subtract it by 13, then rename the original file
REM to what the newName_x which if the filename was oldName_23 it would now be newName_10
FOR /r %%X in (%1) do (
FOR /F "tokens=1-2 delims=_" %%A IN ("%%X") DO (
SET i=%%B
SET /A x=!i! - %z%
REM ~dpX refers to the drive and path of the file
REN "%%~dpX\%%A_%%B" "%newName%_!x!"
)
)
BEARBEITEN:Bearbeitet die REN
befehl, um das Laufwerk und den Pfad der Originaldatei einzuschließen.Von Kleinbuchstaben x in Großbuchstaben X geändert, um nicht zu verwirren %%~dpX
.