如何在 power shell 中使用啟動進程作為 FileSystemWatcher 的操作

如何在 power shell 中使用啟動進程作為 FileSystemWatcher 的操作

我能夠成功使用 System.IO.FileSystemWatcher 來監視資料夾和子目錄中建立的文件,但是當我嘗試使用 Start Process 執行批次檔時,它會執行一次,但不會再次觸發。我修改了一個答案這裡

這是我的 powershell 腳本

$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\lectures"
$watcher.Filter = "*.*"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true  

$action = { $path = $Event.SourceEventArgs.FullPath
            Write-Host "Event Fired"
            $ext = [io.path]::GetExtension($path)
            if($ext -eq ".wma"){
                $file = [io.path]::GetFileNameWithoutExtension($path)
                $folder = Split-Path(Split-Path $path -Parent) -Leaf
                $date = Get-Date -UFormat "%Y-%m-%d"
                $newName = $folder + "_" + $date + $ext
                $newPath = Rename-Item -path $path -newname $newName -PassThru
                Start-Process "C:\lectures\deploy.bat" $newPath
            }
          }

Register-ObjectEvent $watcher "Created" -Action $action
while ($true) {
    Write-Host "Still Alive"
    sleep 5
}

這是我正在運行的批次文件

@echo off
CD %~dp1
ffmpeg -i %~nx1 %~n1.mp3 -loglevel panic
del %1
REM Winscp.com /ini=null /script=uploadScript.txt /parameter %~n1.mp3

powershell 腳本在運行進程後繼續運行,並且進程似乎正常退出。如何讓它繼續處理事件?

相關內容