nhi*_*kle 12 command-line robocopy windows-8
Robocopy
可以选择监视源目录,并复制任何有更改的文件。您可以指定前先复制(在目录中的许多变化必须发生/mon n
在那里n
是变化的数量),并等待多久才重新扫描(/mot t
这里t
是在几分钟内等待的时间)。
我想几乎连续监视一个文件夹,因为我只扫描 1 个文件,而且我希望更改基本上是即时的。不过,我似乎无法在不到一分钟的时间跨度内制作 robocopy 监视器。我试过了/mot 0.5
,但失败了。我也试过/mot 0
,robocopy 扫描一次后就退出了,没有持续监控。
如何让 robocopy 近乎连续地扫描文件夹,时间增量小于 1 分钟?或者,是否有其他命令行工具可以持续监控文件源并实时复制更改?
Jos*_*eph 18
您的标签表明您使用的是 Windows 8。这很好,因为您拥有强大的 PowerShell 工具和一个名为Register-ObjectEvent
.
创建一个文本文件,将扩展名更改为.ps1
,将下面的脚本粘贴到文件中。将$watchedFolder
变量更改为您要观看的文件夹。更改 Do-Something 功能以包含您的 robocopy 命令或其他任何内容。运行脚本,只要脚本正在运行,只要监视文件夹中的文件或文件夹发生更改,该函数就会运行(几乎立即!)。
你可以让这个脚本在 Windows 启动时运行,它会一直在后台运行而不使用计时器。
$block = {
function Do-Something
{
param ($message, $event)
# function to call when event is raised
# do a robocopy or whatever
Start-Process cmd.exe "/C echo $("{0} {1}" -f $event.SourceEventArgs.FullPath, $message)&pause"
}
$watchedFolder = "C:\Users\Admin-PC\Desktop"
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = $watchedFolder
Register-ObjectEvent -InputObject $watcher -EventName Created -SourceIdentifier File.Created -Action { Do-Something "Created" $event }
Register-ObjectEvent -InputObject $watcher -EventName Deleted -SourceIdentifier File.Deleted -Action { Do-Something "Deleted" $event }
Register-ObjectEvent -InputObject $watcher -EventName Changed -SourceIdentifier File.Changed -Action { Do-Something "Changed" $event }
Register-ObjectEvent -InputObject $watcher -EventName Renamed -SourceIdentifier File.Renamed -Action { Do-Something "Renamed" $event }
}
$encodedBlock = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($block))
Start-Process PowerShell.exe -verb Runas -argumentlist '-WindowStyle Hidden', '-NoExit', '-EncodedCommand', $encodedBlock
Run Code Online (Sandbox Code Playgroud)
看到它在行动
运行保存的脚本。
您将看到一个控制台窗口闪烁,在它们关闭后,它正在运行的唯一指示将是几个新进程。
在桌面上做一些事情来测试。
一些背景信息- 如果您不熟悉此答案中使用的工具。
System.IO.FileSystemWatcher
请访问其MSDN 页面。/mot:<M>
Monitors source, and runs again in M minutes if changes are detected.
Run Code Online (Sandbox Code Playgroud)
因为它只接受分钟作为参数,我想你不能强迫它更频繁地运行。但是,您可以使用批处理文件运行它,并让计时和循环发生在批处理文件或计划任务中,而不是在 robocopy 中。
小智 6
DSynchronize是一个独立的实用程序,可让您定期同步硬盘、软盘、LAN、USB Key、CD-DVD(带有数据包写入软件)和 FTP 服务器上的两个或多个文件夹。这不是问题的确切含义,而是我能找到的最接近的东西。
我也在寻找 Robocopy 中 1 分钟最短时间的解决方案,并发现了这个两年前的问题。我最终向我推荐了这个软件,这就是我正在使用的。郑重声明,我与该软件没有任何隶属关系。
优点:
缺点:
在“特殊选项”部分下的屏幕截图中标记了实时同步选项。这将是问题似乎描述的目标。如果未选中并且您没有设置计时器,则可以单击“同步”按钮开始一次性同步。
如何同步两个文件夹:
我还发现了这个YouTube 视频,它展示了该软件的运行情况。它显示了一个旧版本,选项不在同一个地方,但它提供了软件如何工作的感觉。
归档时间: |
|
查看次数: |
26423 次 |
最近记录: |