不断地在两个位置之间移动文件
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}
我需要通过网络在两台服务器之间移动的文件很少。 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}