Stapelverschieben/-ausschneiden von Ordnern und deren Inhalt in einen anderen Ordner

Stapelverschieben/-ausschneiden von Ordnern und deren Inhalt in einen anderen Ordner

Ich habe dieses Batch-Skript, mit dem ich Ordner und deren Inhalt aus einer Textdatei kopieren kann. Kann mir jemand helfen, es so anzupassen, dass es die Ordner und den Inhalt verschiebt/ausschneidet und nicht nur kopiert?

  set file_list=ready.txt
    set dest_folder=c:\small\final
    for /f "delims=" %%a in (%file_list%) do (
    xcopy /Y "%%a*" "%dest_folder%%%~pa"
    )

Antwort1

Bitte beachten Sie: Sie können keine Platzhalter verwenden move.

(und machen Sie zur Verdeutlichung bitte file_list-> dir_list.)

@echo off
Setlocal EnableDelayedExpansion
set dir_list=ready.txt
set dest_folder=c:\small\final\ok
mkdir %dest_folder%
for /f "delims=" %%a IN (%dir_list%) do (
   set dir=%%a
   if "!dir:~-1!"=="\" set dir=!dir:~0,-1!
   move "!dir!" "%dest_folder%\"
)

Bei Verzeichnissen in ready.txtmit am Ende wird \das vor dem entfernt .\move


Bearbeiten:

Da Sie die Verzeichnisse von einem Laufwerk auf ein anderes verschieben,kippenverwenden move. Hier ist eine Lösung mit robocopy:

@echo off
Setlocal EnableDelayedExpansion
set dir_list=ready.txt
set dest_folder=d:\small\final\ok\
if "%dest_folder:~-1%"=="\" set dest_folder=%dest_folder:~0,-1%
for /f "delims=" %%a in (%dir_list%) do (
  set dir1=%%a
  if "!dir1:~-1!"=="\" set dir1=!dir1:~0,-1!
  for %%f in (!dir1!) do set dir2=%%~nxf
  robocopy "!dir1!" "%dest_folder%\!dir2!" /MOVE /E
)

Bitte beachten Sie, robocopydass nur ganze Verzeichnisse und keine einzelnen Dateien kopiert und verschoben werden können. Ihr ready.txtVerzeichnis sollte also nur aus Verzeichnissen bestehen. Nachlaufende Dateien \werden berücksichtigt und können gemischt werden.

Robocopybenötigt den vollständigen Verzeichnisnamen für das neue Verzeichnis, deshalb brauchen wir die
for %%f-Zeile (um den letzten Verzeichnisteil des Quellverzeichnisses zu erhalten.) Es braucht also
robocopy c:\sub\meme d:\sub\meme. Das geht nicht robocopy c:\sub\meme d:\sub.

Sie können diese Batchdatei testen, indem Sie sie echovor die robocopy-Datei setzen
(und vor das moveim vorherigen Beispiel).

verwandte Informationen