Cách sử dụng Start Process như một hành động cho FileSystemWatcher trong powershell


0

Tôi có thể sử dụng thành công System.IO.FileSystemWatcher để xem thư mục và thư mục con cho các tệp đã tạo nhưng khi tôi thử và chạy một tệp bó bằng Start Process, nó sẽ chạy một lần nhưng không bao giờ kích hoạt lại. Tôi đã sửa đổi một câu trả lời từ đây .

Đây là kịch bản powershell của tôi

$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
}

Đây là tập tin bó tôi đang chạy

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

Kịch bản powershell tiếp tục chạy sau khi nó chạy tiến trình và quá trình dường như thoát ra đúng cách. Làm thế nào để tôi làm cho nó tiếp tục xử lý các sự kiện?


Tôi cần tập lệnh powershell để xem thư mục và sau đó làm một cái gì đó khi một tập tin mới được tạo. Tôi không cần chuyển bất kỳ đối số nào cho powershell Tôi cần gọi một lô điền từ powershell
N1mr0d

Có vẻ để làm việc tốt ở bên này. Bạn đang mong đợi nó để đổi tên $watcher.Path = đến một giá trị khác và do đó while ($true) { là sai và do đó chấm dứt. Với kiểu vòng lặp đó, nó chỉ là vô tận khi kết quả là đúng vì vậy bạn có chắc rằng logic khác của bạn đang làm những gì bạn mong đợi với tên thư mục của \_2017-08-29. Bạn có thể cân nhắc sử dụng một IF ELSE logic để xử lý kết quả có thể không phải luôn luôn đúng dựa trên những gì logic khác làm với tên thư mục mà các tệp nằm trong những gì tôi thấy khi tôi kiểm tra.
Pimp Juice IT

Kiểm tra xem Rename-Item -path $path -newname $newName -PassThru đang làm những gì bạn đang mong đợi nếu .wma hiện hữu.
Pimp Juice IT

Bạn có một bản cập nhật hoặc bất kỳ tin tức mới về nhiệm vụ này? Theo thử nghiệm và phát hiện của tôi, đó là những gì tôi đã viết trong các ý kiến ​​trên.
Pimp Juice IT
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.