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
—
Pimp Juice IT
$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.
Kiểm tra xem
—
Pimp Juice IT
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.
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