Suche Hilfe für eine Batch-Datei

Dieser Thread ist Teil einer Diskussion zu einem Artikel:  Zum News-Artikel gehen

crimle

Stammgast
Ich habe einen Ordner mit einer grossen Anzahl Unterordner:

Ordner
+- Unterordner 1
+- Unterordner 2
+- Unterordner 3
+- Unterordner ...

Bestimmte Unterordner sollen von Zeit zu Zeit mittels einer Batchdatei in einen anderen Ordner auf einem anderen Laufwerk verschoben werden. Welche Ordner das sind, steht in einer Text-Datei «folders.txt» mit 1 Ordnernamen pro Zeile. Die Ordnernamen können Leerzeichen enthalten, alles was Windows zulässt.

Mir ist bewusst, dass XCOPY Ordner nicht verschieben, sondern nur kopieren kann. Darum habe ich nach XCOPY einen weiteren Befehl RD hinzugefügt. Die Batchdatei funktioniert grundsätzlich, wenn ich den zu verschiebenden Ordnernamen inkl. Pfad als Konstante direkt in die Batchdatei schreibe. Das ist aber nicht sehr effizient. Darum würde ich gerne auf eine separate Textdatei verweisen, um diese Ordnernamen als Parameter einzulesen. Dabei stehe ich auf dem Schlauch, trotz intensiver Internet-Recherche. Hier der aktuelle Stand meiner Bemühungen:

Code:
@ECHO OFF
FOR /F "tokens=1 " %folder% IN (folders.txt) DO
MD D:\zielpfad\%folder%
XCOPY C:\quellpfad\%folder%\*.* /s /e D:\zielpfad\%folder%
RD C:\quellpfad\%folder% /s /q

Ich wäre sehr froh und dankbar, wenn mir ein Batch-Profi auf die Sprünge helfen könnte. Vielen Dank schon mal!
 

crimle

Stammgast
Mit Hilfe eines Spezialisten konnte ich das Problem lösen und die Batchdatei funktioniert jetzt. Zu Dokumentationszwecken füge ich den Code unten ein:

Code:
@ECHO OFF
REM Diese Batchdatei verschiebt Ordner von einem Quell-Pfad in einen Ziel-Pfad.
REM Anschliessend werden diese Ordner im Quell-Pfad gelöscht.
REM Die Liste der zu verschiebenden bzw. zu löschenden Ordnernamen wird
REM in einer Textdatei folders.txt erwartet (1 Ordnername pro Zeile).
REM Diese Textdatei folders.txt muss sich am gleichen Ort befinden wie diese Batchdatei move_folders.bat
REM
REM Author: crimle / 25.01.2023 / Version 1.0
REM

REM Definition der Variablen (exakte Schreibweise und ohne Backslash am Schluss)
SET QUELLPFAD=C:\Users\admin\quellpfad
SET ZIELPFAD=C:\Users\admin\zielpfad

REM Einlesen der Quelldateinamen und Wiederholen der Prozesse bis die Liste abgearbeitet ist
FOR /F "tokens=*" %%i IN (folders.txt) DO CALL :process %%i
goto :EOF

:process
REM Ordner im Zielpfad erstellen
MD "%ZIELPFAD%\%*"

REM Quellpfad und Zielpfad zwecks Kontrolle anzeigen und auf Tastendruck warten
ECHO Quellpfad: "%QUELLPFAD%\%*"
ECHO Zielpfad: "%ZIELPFAD%\%*"
PAUSE

REM Ordner gemäss Liste vom Quellpfad zum Zielpfad kopieren
XCOPY "%QUELLPFAD%\%*" /s /e "%ZIELPFAD%\%*"

REM Ordner vom Quellpfad löschen
RD "%QUELLPFAD%\%*" /s /q
goto :EOF
 
Oben