/MON:1 选项非常有效,如果仅发生更改,则运行目录扫描。如果 robocpy 每 10 分钟从 Windows 调度程序运行一次,则无法做到这一点。
有没有办法运行
robocopy \\192.168.1.100\D$\RoboCopyTest \\192.168.1.200\D$\RoboCopyTest /FFT /Z /ETA /E /XA:H /R:0 /W:1 /XO /NP /NDL /NFL /MON:1
当 Windows 启动时自动执行命令,如果命令因某种原因停止 - 重新启动它并通知 Windows 事件日志该命令因某种原因停止。带有 /MON:n 选项的 robocpy 命令只有当文件有 N 个更改时才会无限循环运行。
答案1
您可能最好为此创建一个 Windows 服务,而不是从任务计划程序运行它。服务框架是围绕这种一次启动永远运行的程序设计的,并且具有用于在未知停止的情况下触发事件的钩子。
创建用户定义的服务非常简单。尽管本文针对 Windows 2000 设计,它仍然适用于 2008。'sc' 命令用于创建服务。
sc create "Robocopy-Service" binPath= "c:\tools\robocopy.exe" start= auto
根据您希望服务如何运行来更改值。一旦完成,您就可以进入服务管理器并修改服务以处理突然停止。它将始终记录事件(“服务 xyz 意外停止”),但您可以告诉它如何重新启动服务,或者如果您需要发送有关它的电子邮件,请运行脚本。
答案2
扩展上述响应并向 robocopy 提供参数:
sc create "Robocopy Service" binpath="c:\windows\system32\robocopy.exe /JOB:robocopy"
这将读取包含所有参数的 robocopy.rcj 文件。
您可以执行 robocopy 命令并添加所有所需参数,然后添加 /SAVE:robocopy 命令以创建 robocopy.rcj 文件。然后,您只需编辑 robocopy.rcj 文件即可修改参数。