Robocopy /MOVE,目录\树未重新创建,Win-11\Home

Robocopy /MOVE,目录\树未重新创建,Win-11\Home

下面的行以前与 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)什么原因可能导致图像中显示的问题?

Robocopy 输出(右)正在写入不再存在的文件。

以下是目前有效的方法:

@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更改为任何自定义命名的目录,而不是与原始父目录名称完全匹配。/MOVEdir\tree

相关内容