Brauche .bat, das Ordner basierend auf dem Dateinamen erstellt

Brauche .bat, das Ordner basierend auf dem Dateinamen erstellt

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:

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.

verwandte Informationen