目标:找到某个根文件夹(比如说 Documents)下的所有新文件和子文件夹,并将它们复制到另一个磁盘(J:
在本例中)。
使用的命令行:
robocopy c:\users\valery\documents j:\robocopy /XO /E /MAXAGE:20131030 /XD
结果:创建了一个完整的文件夹树。仅复制了新文件,这是它应该的工作方式。到目前为止还不错。
一点是,如果目标磁盘上没有新文件,我不想创建所有子文件夹。
结果是可以接受的,但需要做大量工作来遍历所有文件夹并查找新文件,以及了解哪些子文件夹是新的。
答案1
您可以添加/S
。您不需要\E
用于复制空目录的。您甚至不需要\XO
由 完成的\MAXAGE
。
/S :: 复制子目录,但不复制空目录。
当目录中没有复制文件时,不会在目标上创建该目录。
robocopy c:\users\valery\documents j:\robocopy /S /MAXAGE:20131030 /XD {directories_to_exclude}
如果您没有要排除的目录,您可以使用:
robocopy c:\users\valery\documents j:\robocopy /S /MAXAGE:20131030
robocopy /?
您可以为所有帮助尽一份力。
/S :: copy Subdirectories, but not empty ones.
/E :: copy subdirectories, including Empty ones.
/XD dirs [dirs]... :: eXclude Directories matching given names/paths.
/XO :: eXclude Older files.
/MAXAGE:n :: MAXimum file AGE - exclude files older than n days/date.
答案2
我的简单命令却非常有效:
RoboCopy.exe "\\\SourceServer\Folder" "X:\WEB" /copy:datso /mir /fft /r:0 /w:0 /secfix /mt:20 /xo /xf thumbs.db /log+:X:\TON-FS4.log /nc /ns /np /ndl /nfl /tee
解释:
X:\WEB
是我的目标文件夹。- 开关:
/copy:datso
:指定要复制的文件属性:- (d:数据,a:属性,t:时间戳,s:NTFS 访问控制列表 (ACL),o:所有者信息)
/mir
:镜像目录树/fft
:假设 FAT 文件时间,在复制数据时很重要/r:0
:失败时重试的次数/w:0
:重试之间的等待时间为 0 秒/secfix
:修复所有文件(包括跳过的文件)的文件安全性/mt:20
:创建20个线程副本/xo
:排除旧文件 - 如果目标文件存在并且日期相同或比源文件更新 - 则不必覆盖它。/xf thumbs.db
:排除“thumbs.db”文件(路径),您可以在此处使用通配符(ei:*.mp3)/log+:filename.log
:将状态输出写入指定的日志文件- (附加到现有日志文件)或使用新日志 /log:filename.log
虽然不是这个特殊情况,但我希望这能够在人们进行文件服务器迁移时为他们提供帮助。
答案3
robocopy.exe "Q:\TEST" "T:\TEST" /E /XO /LOG+:"T:test.log
只是为了为 bertieb 分解这个 - 此代码应该直接从命令行运行,而不是在 bat 脚本中运行。
设置源和目标:
robocopy.exe "Q:\TEST" "T:\TEST"
"Q:\TEST"
= 将源目录设置为映射驱动器“Q”
"T:\TEST"
= 将目标目录设置为映射驱动器“T”
使用的选项:
/E /XO /LOG+:"T:test.log"
/E
:复制子目录(包括空目录)/XO
:排除较旧的文件LOG+
:这会将 robocopy 过程记录在名为 test 的 .log 文件中,该文件位于目标的根目录中(即 T 上的“TEST”文件夹上方)。LOG+ 会将输出状态附加到 test.log 文件,而不是覆盖它。
边注:
LOG+
如果您只想保存最近的会话信息,可以将选项切换为 LOG 选项。
易于阅读的版本有关 Robocopy 的更多信息或者Microsoft 文档。
答案4
robocopy.exe "Q:\TEST" "T:\TEST" /E /XO /LOG+:"T:test.log"