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