下面的行以前与 Win-10\Home 一起工作;dir\tree 保持完整。
robocopy D:\ A:\Bak_Up /E /ZB /dcopy:dat /LOG:A:\Bak_Up.log /TEE
相比之下,使用下面 .bat 中的 Win-11\Home 不会创建目录树;Robocopy 会将各个文件转储到目标目录中。
@echo off
Setlocal EnableDelayedExpansion
cd /d A:\45011
robocopy %CD% E:\45011\TEMP_08_Day_From_A /S /ZB /MOVE /LOG:E:\45011\TEMP_08_Day_From_A\_08_Days.log /TEE
Robocopy /?
-- 明确指出,/MOVE :: MOVE files AND dirs (delete from source after copying).
它没有指定/MOVE
与任何其他选项一起使用来重新创建原始目录树。但是,.bat 中的以下内容确实会重新创建和/或move
目录树。显著的区别是目标。
@echo off
Setlocal EnableDelayedExpansion
cd /d A:\45011
robocopy %CD% E:\45011 /S /E /ZB /MOVE /LOG:E:\45011\TEMP_08_Day_From_A\_08_Days.log /TEE
- 问题 1) 上述什么问题导致了帮助文件所述的结果输出与实际
Robocopy
输出之间的混淆?
以下有更多证据表明Robocopy
,或cmd.exe
只是行为不当。
从提升的提示符:
A:\45011>For /f %i in ('dir /b ') do robocopy %i E:\45011\TEMP_08_Day_From_A /XD 2024*2? /S /ZB /MOVE /LOG:E:\45011\TEMP_08_Day_From_A\_08_Days.log /TEE
最初,使用上述命令行,目录树实际上是在 dest\path 中重新创建的,然后从 src\path 中删除。区域性短暂断电约五分钟;然后 Rcopy 恢复,恢复时间未知,裸文件现在被转储到 dest\path;不再有目录\树。
随后又发生了一次短暂的断电,这时我们发现 dir\tree 不再被重新创建。然后我们使用 ^C 手动取消;然后使用上面显示的相同提升提示符和行重新启动。裸文件继续转储到 dest\path 中,没有任何子目录。
即使断电,机器仍保持电池供电。USB 连接的驱动器需要等待电源恢复。
- 问题 2)什么原因导致了上述行为?
Rcopy 行为不当的最后一项,请参见dir /b
“左侧”提升提示中显示的图像,与“右侧”中显示的活跃 Rcopy 输出相比。Rcopy 似乎正在写入该目录中不再存在的文件;或该硬盘上的任何位置。
需要明确的是,父目录A:\45011
包含名为 yyyymmdd 的子目录列表。
- 问题 3)什么原因可能导致图像中显示的问题?
以下是目前有效的方法:
@echo off
Setlocal EnableDelayedExpansion
cd /d A:\45011
robocopy %CD% C:\45011 /S /E /ZB /DCOPY:DAT /MT:16 /MOVE /XD 2024*3? "Download Record" "Manual Capture" "Manual Record" VMS_ALARM_Sounds _Reports /LOG:C:\45011\_Days.log /TEE
我们的目标是将原始目录/COPY
更改为任何自定义命名的目录,而不是与原始父目录名称完全匹配。/MOVE
dir\tree