繁体   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