使用内部更改监视器 /MON:1 选项自动化 Windows Robocopy

use*_*402 7 windows-server-2008 windows-service robocopy

/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
Run Code Online (Sandbox Code Playgroud)

命令在 Windows 启动时自动执行,如果命令因某种原因停止 - 重新启动它并向 Windows 事件日志通知命令因某种原因停止。带有 /MON:n 选项的 robocpy 命令只有在文件有 N 次更改时才会无限循环运行。

小智 9

要扩展上述响应并为 robocopy 提供参数:

sc create "Robocopy Service" binpath="c:\windows\system32\robocopy.exe /JOB:robocopy"
Run Code Online (Sandbox Code Playgroud)

这将读取包含所有参数的 robocopy.rcj 文件。

您可以使用所有所需参数执行 robocopy 命令,并添加 /SAVE:robocopy 命令以创建 robocopy.rcj 文件。然后您可以通过简单地编辑 robocopy.rcj 文件来修改参数。


sys*_*138 6

您最好为此创建一个 Windows 服务,而不是从任务计划程序中运行它。Service 框架是围绕这种启动一次永远运行的程序设计的,并且具有用于在未知停止的情况下发生事件的钩子。

创建用户定义的服务非常简单。虽然这篇文章是为 Windows 2000 设计的,但它仍然适用于 2008。'sc' 命令用于创建服务。

sc create "Robocopy-Service" binPath= "c:\tools\robocopy.exe" start= auto
Run Code Online (Sandbox Code Playgroud)

根据您希望服务运行的方式更改这些值。一旦它在那里,您可以进入服务管理器并修改服务以了解如何处理突然停止。它总是会记录和事件(“服务 xyz 意外停止”),但您可以告诉它如何重新启动服务,或者如果您需要发送有关它的电子邮件,则运行脚本。