不断地在两个位置之间移动文件

Moving files between two locations constantly

我需要通过网络在两台服务器之间移动的文件很少。 UNC 路径将是 \server\c$... 并且在另一台服务器上相同。

我正在寻找可以执行此操作的脚本或软件。我知道我可以使用 PowerShell 或 robocopy,但我想要一些可以监视位置的东西,如果文件出现,它会移动它。

我还需要在检测到文件后延迟文件移动 - 如 'oh there is a file there waits 5 seconds moves the file'.

这样做的最佳方法是什么?

编辑:设法通过从 Drew 提供的 PowerShell 脚本创建一个 .exe,使用 PS EXE 应用程序并使用 NSSM 从中创建服务来设法对此进行排序。

首先,下次请尝试自己编写一些代码。即使它是一些 Get-ChildItem while 循环。

这将监视文件夹位置 $watcher.path 是否有任何新的 "Created" 事件,并在事件发生后大约 5 秒。我不确定我从哪里偷来的,但它已经派上用场了很长时间。

它只会监控新事件,不会监控以前的事件。因此,如果文件夹中有一些文件,它只会 运行 根据您的操作对新创建/修改的文件执行操作。

# Set folder and files to watch and misc flags
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\Source\Location"
$watcher.Filter = "*.*"
$watcher.IncludeSubdirectories = $false
$watcher.EnableRaisingEvents = $true  

# Define actions to be taken when an event is detected
$action = {
    $path = $Event.SourceEventArgs.FullPath
    $Last = 1
    $Current = (Get-Item $path).length
    while ($Current -ne $Last) {
        $Last = $Current
        Start-Sleep -Seconds 1
        $Current = (Get-Item $path).length
    }
    # Change x if you want to increase the time before the move
    #sleep x
    Move-Item -Path $path -Destination "C:\Destination\Location"
}

# Decide which events to watch
# Changed, Created, Deleted, Renamed events.
Register-ObjectEvent $watcher "Created" -Action $action
while ($true) {sleep 5}