![](/img/trans.png)
[英]How to copy files from one folder to another folder using xcopy or robocopy?
[英]robocopy extra files move to another folder
我試圖編寫一個批處理,將所有文件(也包含在子文件夾中)從目錄1復制到目錄2,然后將在目錄2中找到的所有多余文件(或目錄,如果可能)移動到目錄3。 換句話說,我嘗試使用directory1鏡像directory2,而不是執行清除操作,而是將多余的文件移動到directory3上。
到目前為止,我已經能夠在文本文件中獲取這些額外的文件...現在,我不知道如何繼續...
ROBOCOPY directory1 directory2 /E /COPYALL /R:0 /XO /X /tee /njh /njs /np /ns /nc /ndl > Extrafiles.txt
此外,Extrafiles.txt在每個文件路徑的開頭確實包含許多額外的空格,這意味着在移動文件之前需要進行一些字符串操作。 如果不存在自動創建目標目錄的命令,該使用哪條命令來移動文件?
Extrafiles.txt的示例輸出
directory2\File1.txt
directory2\subdirectory2\deeper\File2.txt
任何幫助將不勝感激。 謝謝。
使其更加清晰:
假設directory1包含:
\subdir1
file4.txt
file5.txt
\deeper
file6.txt
file7.doc
file1.txt
file2.txt
和directory2已經包含:
\subdir1
file4.txt
file007.ppt
\deeper
file6.txt
file7.doc
\deepest
file155.txt
file1.txt
然后我要復制這些文件:
directory1\file2.txt to directory2\file2.txt
directory1\subdir1\file5.txt to directory2\subdir1\file5.txt
然后將這些文件移動:
directory2\subdir1\file007.ppt to directory3\subdir1\file007.ppt
directory2\subdir1\deeper\deepest\file155.txt to directory3\subdir1\deeper\deepest\file155.txt
希望我說得足夠清楚:)
您可以使用for
遍歷robocopy
生成的文件的內容(請參閱for /?
)。
然后,您可以使用延遲擴展和變量替換來生成目標路徑(請參閱set /?
),最后調用一個子程序,該子例程將在需要時執行mkdir
,然后move
(請參閱call /?
)。
解決方案草案為:
@echo off
setlocal enabledelayedexpansion
set srcdir=directory2
set tgtdir=directory3
for /f "usebackq tokens=*" %%A in ("Extrafiles.txt") do (
set srcpath=%%A
set tgtpath=!srcpath:%srcdir%=%tgtdir%!
call :mkdirmove !srcpath! !tgtpath!
)
goto :EOF
:mkdirmove
if not exist %~dp2nul mkdir %~dp2
move %1 %2
goto :EOF
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.