Ich brauche eine .bat-Datei, die Ordner auf der Grundlage von Dateinamen erstellt und Dateien darin ablegt. Ich habe Namen, die wie folgt formatiert sind:
string1 - string2 - string3 - string2 - string3_number.jpg
Ich habe einen Befehl gefunden, der die ersten 3 Zeichenfolgen verwendet, die ich brauche, aber ich kann ihn nicht weiter zum Laufen bringen. Wenn ich versuche, diesen Befehl in bat einzugeben, wird nur ein Ordner mit dem Namen „--“ erstellt.
for /F "tokens=1,2,3 delims=-" %%a in ('dir /B /A-D') do (set string1=%%a&set string2=%%b&set string3=%%c
md "%string1%-%string2%-%string3%")
@echo auszuschalten und davor in .bat setlocal zu setzen, funktioniert nicht. Kann jemand helfen, das richtig zu machen, sodass Ordner auf Basis von Namen erstellt und Dateien abgelegt werden? Ich habe diese Beiträge gelesen, kann aber trotzdem nicht einmal Ordner erstellen:
- Erstellen Sie stapelweise einen Ordner basierend auf dem Dateinamen und verschieben Sie mehrere zugehörige Dateien in den erstellten Ordner
- Benötigen Sie ein Skript zum Erstellen von Ordnern basierend auf Dateinamen und zum automatischen Verschieben von Dateien
- Erstellen Sie Ordner stapelweise basierend auf einem Teil des Dateinamens und verschieben Sie Dateien in diesen Ordner
Antwort1
Wegenverzögerte Expansionist erforderlich bei der EinstellungUndDie Verwendung einer Variable in einem (Codeblock) funktioniert nicht.
Da Sie die Variablen aber nicht ändern, ist das überhaupt nicht nötig.
@Echo off & Setlocal EnableDelayedExpansion
for /F "tokens=1,2,3 delims=-" %%a in ('dir /B /A-D') do (
set "Folder=%%a-%%b-%%c"
Rem to remove the trailing space from the Folder
set "Folder=!Folder:~0,-1!"
If not exist "!Folder!\" MD "!Folder!"
)
Um auch Dateien zu verschieben, ist das der falsche Ansatz, Sie sollten die Dateien dann zuerst iterieren und dann wie oben beschrieben aufteilen.