批量移動/剪切資料夾及其內容到另一個資料夾

批量移動/剪切資料夾及其內容到另一個資料夾

我有這個批次腳本,允許我從文字檔案複製資料夾及其內容,有人可以幫我調整它,以便它移動/剪切資料夾+內容而不僅僅是複製嗎?

  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"
    )

答案1

請注意:您不能使用通配符move

(為了清楚起見,請填寫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%\"
)

對於ready.txt尾隨 的目錄,\\move.


編輯:

由於您要將目錄從一個驅動器移動到另一個驅動器,因此您不能使用move。這是一個解決方案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
)

請注意,robocopy只能複製和移動整個目錄,而不能複製和移動單一檔案。所以你的ready.txt應該只包含目錄。尾隨\被處理並且可以混合。

Robocopy需要新目錄的完整目錄名稱,這就是為什麼我們需要 - 行(
for %%f以獲取來源目錄的最後一個目錄部分)。
robocopy c:\sub\meme d:\sub\meme你做不到robocopy c:\sub\meme d:\sub

您可以將其放在-fileecho之前(以及前面範例中的 之前)來測試此批次檔。robocopy
move

相關內容