2016-08-10 2 views
1

У меня возникли проблемы со сценарием, который контролирует папку. FileSystemWatcher только, кажется, обнаруживает, когда файл копируется в папку, а не когда он просто перемещается на него с того же диска. Есть ли способ обнаружить это?FileSystemWatcher обнаруживает, когда файл перемещен в папку

$desFolder = "H:\Media" 
$ExFolder = "H:\Monitor" 

$Filter  = '*.*' 
$fsw = New-Object IO.FileSystemWatcher $ExFolder, $Filter 
$fsw.IncludeSubdirectories = $true 

$fswOnChange = Register-ObjectEvent -InputObject $fsw -EventName Changed -SourceIdentifier FileUpdated -Action { 
    $File = Get-Item $EventArgs.FullPath 
    if($File.Name -imatch '\.(?:mp4|mkv)$' -and $file.Name -match '.*?S\d+E+'){ 
     Start-Sleep -s 1 
     if(Test-FileReady $File.FullName){ 
      Move-Files $File 
     } 
    } 
} 
function global:Test-FileReady { 
    Param([parameter(Mandatory=$true)][string]$Path) 
    if (Test-Path -LiteralPath $Path) { 
     trap { 
     return $false 
     } 
     $stream = New-Object system.IO.StreamReader $Path 
     if ($stream) { 
     $stream.Close() 
     return $true 
     } 
    } 
} 
function global:Move-Files{ 
    Param([parameter(Mandatory=$true)][System.IO.FileInfo]$File) 
    Write-Host $File.Name 
} 
+1

Пожалуйста, покажите свой код. –

+0

Я добавил пример кода – FuSiOn

ответ

3

Попробуйте использовать Renamed и Created события, а также.

BTW, то IO.FileSystemWatcher docs говорят:

Компонент не будет следить за указанный каталог, пока путь не будет установлен, и EnableRaisingEvents верно

$fsw.EnableRaisingEvents = $true 
+0

«Создано», похоже, работает для перемещенных файлов, которые непосредственно перемещаются в папку. Но когда папка с файлами перемещается в каталог, она запускает только в папку, а не файлы, содержащиеся в ней. Я могу работать с этим, но есть ли способ разрешить запуск каждого файла в папке? – FuSiOn

+0

@FuSiOn, по-видимому, перемещение папки - это одна атомная операция на уровне файловой системы, поэтому она запускает только одно событие. Вам придется перечислить перемещенные папки вручную. – wOxxOm

Смежные вопросы