Batch-Datei - Umbenennen von Dateien basierend auf dem Namen des übergeordneten Elements und (sub -) Ordner(s) name
Hier ist der code:
for /r %%a in (*.jpg, *.png, *.bmp, *.exe) do (
for /d %%d in (%CD%) do (
set newname=%%~nd%~x1
ren "%%~a" "!newname!%%~Xa"
echo media file in %%~fa renamed to "!newname!%%~Xa"
)
)
Das Hauptproblem ist, dass die Dateien in den Unterordnern landen mit Namen wie das übergeordnete Verzeichnis Namen ich führen Sie die bat-Datei aus.
Beispiel dafür, was passiert:
C:\parent\name.jpg renamed to C:\parent\parent.jpg
C:\parent\child\name.jpg renamed to C:\parent\child\parent.jpg
C:\parent\child1\child2\name.jpg renamed to C:\parent\child1\child2\parent.jpg
Brauche ich:
C:\parent\1.jpg rename to C:\parent\parent.jpg
C:\parent\child\1.jpg rename to C:\parent\child\child.jpg
C:\parent\child1\child2\name.jpg renamed to C:\parent\child1\child2\child2.jpg
Hilfe?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das echo der ren-Befehle auf dem Bildschirm.
Entfernen Sie die
echo
Schlüsselwort, um es tatsächlich durchzuführen benennt.Die ersten %%a FOR-Befehl gibt jedes filespec rekursiv und das format jeder Datei:
c:\path\to\folder\filename.ext
Der zweite %%b FÜR gegeben ist die
c:\path\to\folder
Teil und\.
ist am Ende Hinzugefügt, wodurch esc:\path\to\folder\.
die sich auflöst in das aktuelle Verzeichnisto
und es zu interpretierenfolder
wie der Dateiname.Also die
%%~nxb
gibt den Dateinamen und die Dateierweiterung von %%b diefolder
in diesem Fall, und das wird in der umbenennen-Befehl.%%~xa
gibt die .Erweiterung von %%string.Ich hoffe, dass ist ziemlich klar, zusammen mit der Prüfung der code.
Der letzten Seite des
FOR /?
Hilfe beschreibt die metavariables.