Прежде всего, пожалуйста, попробуйте создать код самостоятельно в следующий раз.Даже если это был какой-то 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}