我试图在 Windows 7 中获取 robocopy 以生成 Unicode 日志,因为我有带有 Unicode 字符的文件。我使用的命令:
robocopy C:\mysource D:\mydest /mir /unilog:backup.log /tee
Run Code Online (Sandbox Code Playgroud)
文件副本有效并且屏幕输出正确,日志文件本身只包含胡言乱语。这与我使用命令提示符还是 Powershell 无关。
是什么赋予了?难道我做错了什么?
目标:在某个根文件夹(让我们说 Documents)下找到所有新文件和子文件夹,并将它们复制到另一个磁盘(J:在这种情况下)。
使用的命令行:
robocopy c:\users\valery\documents j:\robocopy /XO /E /MAXAGE:20131030 /XD
结果:创建了一个完整的文件夹树。只复制新文件,这是它应该工作的方式。目前很好。
一点是,如果目标磁盘中没有新文件,我不想在目标磁盘上创建所有子文件夹。
结果是可以接受的,但是要浏览所有文件夹并查找新文件以及了解哪些子文件夹是新的子文件夹,还有很多工作要做。
我不敢相信我在通过 windows 命令行将目录复制到另一个目录时遇到了麻烦。
我想做的很简单-:
假设我有一个目录-:
C:\test
Run Code Online (Sandbox Code Playgroud)
我想将测试复制到 D: 所以在 D 中应该有一个如下所示的文件夹:
D:\test
Run Code Online (Sandbox Code Playgroud)
当我使用
robocopy C:\test D:\test \E
Run Code Online (Sandbox Code Playgroud)
D 驱动器的根目录中包含 C:\test 的内容,而不是包含在名为 test 的目录中。
你怎么做这个简单的事情?
我想运行 RoboCopy,它将用 % progress 更新控制台,但不会用 % progress 弄乱日志文件。
以下 RoboCopy 命令将执行所需的复制并将日志信息附加到日志文件中。
RoboCopy <source> <dest> /log+:<log file> /tee
Run Code Online (Sandbox Code Playgroud)
问题是日志文件被 % 进度更新弄得乱七八糟。因此,我需要将命令更改为:
RoboCopy <source> <dest> /log+:<log file> /tee /np
Run Code Online (Sandbox Code Playgroud)
现在的问题是我没有在屏幕上收到任何进度更新。
我已经阅读了http://technet.microsoft.com/en-us/library/cc733145%28WS.10%29.aspx几次,但找不到我需要的开关。我错过了什么还是我想要实现的目标是不可能的?
在不使用/xj开关运行 robocopy.exe 来备份 C:\Users\ 文件夹后,我最终得到了一个太长的递归目录。例如,如果您运行,dir /b /s您将收到以下错误:
目录名称 C:\Users\ ...\AppData\Local\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application数据\应用程序数据太长。
我尝试删除它,rmdir "Application Data" /s但收到错误“文件名太长”
我查看了其他解决方案,但我认为我可以使用导致问题的工具来解决它。
我在我的系统上运行了 robocopy(所有我可以关闭的应用程序)并尝试将我的整个 C 驱动器复制到另一个驱动器。
我不知道为什么,但是,C 驱动器中有一个名为“文档和设置”的系统链接,它在我睡觉时使用该链接创建了超过 TB 的垃圾数据。值得庆幸的是,我停止了它并擦除了驱动器,但它仍然有点糟糕。我希望能完成它,这样我今天早上就可以去重置系统,现在我没有可行的备份,并且可能会出现更多问题未来。
我想备份所有驱动器,而不会再次创建类似的情况... robocopy 中是否有一个参数可以允许这样做?
具体来说,我想复制整个驱动器。它的所有结构和文件,忽略空文件夹,只复制链接/快捷方式/连接/诸如此类的文件,而不是它们指向的内容......这就是导致整个混乱的原因。
我使用的命令:
robocopy C:\ D:\backup /S /COPYALL /DCOPY:DAT /R:1 /W:1 /B
我想复制目录树,同时保留正在复制的任何文件和目录后代的时间戳。
源目录位于数据 DVD(ISO-9660 文件系统)上。我正在复制到 NTFS 分区。使用 Windows 资源管理器进行复制时,我看到所有复制的文件夹和文件的时间戳都设置为复制操作发生时的日期和时间。这对我来说并不令人满意。我不仅要复制文件数据,还要复制常规文件和目录的时间戳。
我用谷歌搜索了一下,并回忆起使用过这两种方法xcopy,robocopy所以我尝试了以下两种方法:
robocopy E:\projects C:\Users\me\projects foobar /E /DCOPY:T
xcopy E:\projects C:\Users\me\projects foobar /E /F /K
Run Code Online (Sandbox Code Playgroud)
Robocopy 工作了一段时间,然后告诉我这个,有趣的是:
2016/03/17 20:33:43 ERROR 87 (0x00000057) Time-Stamping Destination Directory c:\Users\me\projects\foobar\baz\mew\
The parameter is incorrect.
Waiting 30 seconds...
Run Code Online (Sandbox Code Playgroud)
Xcopy 似乎没有为它复制的子目录保留时间戳,并且没有办法告诉它。
我还尝试了 Microsoft TechNet 的 RichCopy,它被吹捧为对 Robocopy 的各种改进,它也不保留目录的时间戳,也没有选项可以打开它。
请注意,我保留文件的时间戳没有问题。提到的所有三个程序都可以做到这一点。除了资源管理器,我尝试的第一件事,但没有惊喜,真的。
我在 Windows 10 64 位上。
我可以尝试哪些其他程序或方法来获得我想要的行为?
PS 我也试过 Total Commander,因为 Stack Overflow 上有人说它会保留目录时间戳。不会,至少对我来说不会。SyncBack 也做不到。
无论出于何种原因,我都遇到了 robocopy 问题。
我有几个我每天使用的脚本,它们利用 copy、xcopy 和 robocopy,它们目前都在工作,除了这个。我正在使用我在其他脚本中使用的相同的标准开关。
robocopy "K:\Some Folder" "H:\Files\1" /e /w:0 /r:2 /MIR
Run Code Online (Sandbox Code Playgroud)
直接K:\Some Folder复制任何文件。但在任何文件,说K:\Some Folder\Some Subfolder千万不能被复制。我查了一下,使用 /s 或 /e 也应该复制子目录中的所有文件。为什么不是?如果我暂停脚本,它会在某些地方显示“*额外文件”——这可能与它有关。
以前我是用这些开关的,但是简化后还是不行:
/e /w:0 /r:2 /XO /NFL /NDL /NJH /NJS /nc /ns /np
Run Code Online (Sandbox Code Playgroud) 我有一个跨平台构建工具链,它将一些文件夹复制到目的地。robocopy我在 Windows 和rsyncmacOS上使用,因为它们支持控制台进度输出。命令的形式如下:
robocopy "C:\Some\Source" "C:\Some\Destination" /MIR
rsync -a --progress --delete "/Some/Source/" "/Some/Destination"
Run Code Online (Sandbox Code Playgroud)
但现在我遇到了一种情况,我需要排除一些可能出现在源目录中的文件。如果它们以前存在于目的地,我需要将它们删除。rsync有--delete-excluded选项:
rsync -a --progress --delete-excluded --exclude '*.jpg' "/Some/Source/" "/Some/Destination"
Run Code Online (Sandbox Code Playgroud)
但我无法robocopy使用以下选项进行这样的操作/XF:
robocopy "C:\Some\Source" "C:\Some\Destination" /MIR /XF *.jpg
Run Code Online (Sandbox Code Playgroud)
robocopy将旧的排除文件保留在目标位置。有没有办法让robocopy行为像rsync选项一样--delete-excluded?我知道我可以稍后扫描目标树以使用另一个命令删除排除的文件,但我想这样做,robocopy因为树确实很大,我想通过复制操作节省时间。
robocopy ×10
windows ×5
command-line ×4
backup ×1
batch-file ×1
unicode ×1
windows-7 ×1
xcopy ×1