簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM