Bilddateien kopieren und neu einsortieren
Hallo zusammen!
ich möchte folgendes bewerkstelligen:
In einer Verzeichnisstruktur liegen Bilddateien
Testumgebung/Projekte/2020/20_Projektname/Bilder/3015_Test_0001_00022.jpg
Testumgebung/Projekte/2020/20_Projektname/Bilder/3015_Test_0001_00023.jpg
Testumgebung/Projekte/2020/20_Projektname/Bilder/3015_Test_0001_00024.jpg
Testumgebung/Projekte/2020/20_Projektname/Bilder/3015_Test_0001_00025.jpg
Testumgebung/Projekte/2020/20_Projektname/Bilder/3015_Test_0002_00001.jpg
Testumgebung/Projekte/2020/20_Projektname/Bilder/3015_Test_0002_00002.jpg
Testumgebung/Projekte/2020/20_Projektname/Bilder/3015_Test_0002_00003.jpg
Testumgebung/Projekte/2020/20_Projektname/Bilder/3016_Test_0002_00001.jpg
Testumgebung/Projekte/2020/20_Projektname/Bilder/3016_Test_0002_00002.jpg
Diese Bilddateien sollen nun folgendermaßen über einen Kopierbefehl in ein Archiv einsortiert werden
Testumgebung/Archiv/3015_VerzeichnisA/0001/00022.jpg
Testumgebung/Archiv/3015_VerzeichnisA/0001/00023.jpg
Testumgebung/Archiv/3015_VerzeichnisA/0001/00024.jpg
Testumgebung/Archiv/3015_VerzeichnisA/0001/00025.jpg
Testumgebung/Archiv/3015_VerzeichnisA/0002/00001.jpg
Testumgebung/Archiv/3015_VerzeichnisA/0002/00002.jpg
Testumgebung/Archiv/3015_VerzeichnisA/0002/00003.jpg
Testumgebung/Archiv/3016_VerzeichnisB/0002/00001.jpg
Testumgebung/Archiv/3016_VerzeichnisB/0002/00002.jpg
Da ich mehrere Jahrgänge habe, würde ich den Teil /2020/20_Projektname in /*/20_* ändern.
Die Frage ist, wie ich die Dateinamen aufsplitten und in Variablen umwandeln kann??
Am liebsten alles in einer bat
ich möchte folgendes bewerkstelligen:
In einer Verzeichnisstruktur liegen Bilddateien
Testumgebung/Projekte/2020/20_Projektname/Bilder/3015_Test_0001_00022.jpg
Testumgebung/Projekte/2020/20_Projektname/Bilder/3015_Test_0001_00023.jpg
Testumgebung/Projekte/2020/20_Projektname/Bilder/3015_Test_0001_00024.jpg
Testumgebung/Projekte/2020/20_Projektname/Bilder/3015_Test_0001_00025.jpg
Testumgebung/Projekte/2020/20_Projektname/Bilder/3015_Test_0002_00001.jpg
Testumgebung/Projekte/2020/20_Projektname/Bilder/3015_Test_0002_00002.jpg
Testumgebung/Projekte/2020/20_Projektname/Bilder/3015_Test_0002_00003.jpg
Testumgebung/Projekte/2020/20_Projektname/Bilder/3016_Test_0002_00001.jpg
Testumgebung/Projekte/2020/20_Projektname/Bilder/3016_Test_0002_00002.jpg
Diese Bilddateien sollen nun folgendermaßen über einen Kopierbefehl in ein Archiv einsortiert werden
Testumgebung/Archiv/3015_VerzeichnisA/0001/00022.jpg
Testumgebung/Archiv/3015_VerzeichnisA/0001/00023.jpg
Testumgebung/Archiv/3015_VerzeichnisA/0001/00024.jpg
Testumgebung/Archiv/3015_VerzeichnisA/0001/00025.jpg
Testumgebung/Archiv/3015_VerzeichnisA/0002/00001.jpg
Testumgebung/Archiv/3015_VerzeichnisA/0002/00002.jpg
Testumgebung/Archiv/3015_VerzeichnisA/0002/00003.jpg
Testumgebung/Archiv/3016_VerzeichnisB/0002/00001.jpg
Testumgebung/Archiv/3016_VerzeichnisB/0002/00002.jpg
Da ich mehrere Jahrgänge habe, würde ich den Teil /2020/20_Projektname in /*/20_* ändern.
Die Frage ist, wie ich die Dateinamen aufsplitten und in Variablen umwandeln kann??
Am liebsten alles in einer bat
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 652556
Url: https://administrator.de/contentid/652556
Ausgedruckt am: 19.11.2024 um 15:11 Uhr
3 Kommentare
Neuester Kommentar
Zitat von @kayes73:
Die Frage ist, wie ich die Dateinamen aufsplitten und in Variablen umwandeln kann??
Die Frage ist, wie ich die Dateinamen aufsplitten und in Variablen umwandeln kann??
Brauchst keine extra Variablen. Das kannst du mit den FOR Variablen erledigen.
Suchen und Tokenizing:
for /d %%i in ("Testumgebung\Projekte\*") do for /d %%j in ("%%i\20_*") do for %%k in ("%%j\Bilder\*.jpg") do (
for /f "tokens=1-4 delims=_" %%l in ("%%~nk") do echo %%l %%m %%n %%o
)
Sollte das "Test" in deinen Dateinamen aber real noch Unterstriche in variabler Anzahl enthalten, ist Schluss mit Batch und du must dir eine Sprache suchen, die Regex unterstützt.
Steffen
Quick and dirty, Verzeichnis erstellen und Dateien mit neuen Namen kopieren.
"Dirty" weil ich MD einfach auf Fehler laufen lasse, falls das Verzeichnis bereits existiert. Etwas sauberer wäre so was wie ...
Ob du an dein 3015 und 3016 noch irgendwas anhängen willst, wie in deinem Beispiel oben, musst du selbst wissen.
Steffen
for /d %%i in ("Testumgebung\Projekte\*") do for /d %%j in ("%%i\20_*") do for %%k in ("%%j\Bilder\*.jpg") do (
for /f "tokens=1-4 delims=_" %%l in ("%%~nk") do (
2>nul md "Testumgebung\Archiv\%%l\%%n"
>nul copy "%%k" "Testumgebung\Archiv\%%l\%%n\%%o%%~xk"
)
)
if not exist "foo\bar" md "foo\bar"
Ob du an dein 3015 und 3016 noch irgendwas anhängen willst, wie in deinem Beispiel oben, musst du selbst wissen.
Steffen