![](/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.