Batch - Dateinamen lesen und verschieben
Hallo zusammen,
In einem Ordner liegen verschiedene Textdateien, die in einen anderen Ordner verschoben werden sollen. Die Dateien sind nach dem folgenden Muster aufgebaut:
XXX_YYYY.txt
Wichtig dabei sind die ersten Buchstaben "XXX". Danach sollen Unterordner in dem Zielordner erstellt werden, wo dann die jeweiligen Textdateien abgelegt werden.
Ich habe bereits ein funktionierendes Skript, aber es wird nur für eine Datei durchgeführt. Das Skript sieht folgendermaßen aus:
Ich hätte gedacht, dass die Schleifen folgendermaßen kombiniert werden müssen, damit alle Dateien aus dem Quellordner verschoben werden. Dann habe ich jedoch den Fehler "Das System kann die angegebene Datei nicht finden"
Zudem habe ich noch das Problem, dass der Quellordner "Test" in der Praxis ein Ordner mit einem Leerzeichen ist. Wie würde man da vorgehen? In der For-Schleife kenne ich das mit Anführungszeichen aber in der String Variable funktioniert das bisher nicht.
In einem Ordner liegen verschiedene Textdateien, die in einen anderen Ordner verschoben werden sollen. Die Dateien sind nach dem folgenden Muster aufgebaut:
XXX_YYYY.txt
Wichtig dabei sind die ersten Buchstaben "XXX". Danach sollen Unterordner in dem Zielordner erstellt werden, wo dann die jeweiligen Textdateien abgelegt werden.
Ich habe bereits ein funktionierendes Skript, aber es wird nur für eine Datei durchgeführt. Das Skript sieht folgendermaßen aus:
@echo off
set "Quelle=C:\Users\user\Desktop\Batch_Test\Test"
set "Ziel=C:\Users\user\Desktop\Batch_Test\Ziel"
FOR /f "delims=" %%D in ('Dir /b %quelle%\*.*') do (
set varKOM=%quelle%\%%D
)
FOR /f "delims=_ tokens=1" %%I in ('Dir /b %quelle%\*_*.*') do (
set varAuftrag=%%I
)
if not exist %ziel%\%varAuftrag% md %ziel%\%varAuftrag%
MOVE "%varKOM%" "%ziel%\%varAuftrag%\"
Ich hätte gedacht, dass die Schleifen folgendermaßen kombiniert werden müssen, damit alle Dateien aus dem Quellordner verschoben werden. Dann habe ich jedoch den Fehler "Das System kann die angegebene Datei nicht finden"
@echo off
set "Quelle=C:\Users\user\Desktop\Batch_Test\Test"
set "Ziel=C:\Users\user\Desktop\Batch_Test\Ziel"
FOR /f "delims=" %%D in ('Dir /b %quelle%\*.*') do (
set varKOM=%quelle%\%%D
FOR /f "delims=_ tokens=1" %%I in ('Dir /b %quelle%\*_*.*') do (
set varAuftrag=%%I
if not exist %ziel%\%varAuftrag% md %ziel%\%varAuftrag%
MOVE "%varKOM%" "%ziel%\%varAuftrag%\"
)
)
Zudem habe ich noch das Problem, dass der Quellordner "Test" in der Praxis ein Ordner mit einem Leerzeichen ist. Wie würde man da vorgehen? In der For-Schleife kenne ich das mit Anführungszeichen aber in der String Variable funktioniert das bisher nicht.
Please also mark the comments that contributed to the solution of the article
Content-ID: 668315
Url: https://administrator.de/contentid/668315
Printed on: December 10, 2024 at 15:12 o'clock
2 Comments
Latest comment
@echo off &setlocal
set "Quelle=C:\Users\user\Desktop\Batch_Test\Test"
set "Ziel=C:\Users\user\Desktop\Batch_Test\Ziel"
for %%a in ("%quelle%\*_*.txt") do (
for /f "tokens=1 delims=_" %%b in ("%%~na") do (
if not exist "%ziel%\%%b" md "%ziel%\%%b" >nul
move "%%a" "%ziel%\%%b\"
)
)