2016-12-21 8 views
1

これをフォローしていたのですが、これは、フォルダを監視するためにこのSO answerをフォローしていましたが、一度は動作しています。私は、フォルダを作成したり、バッチファイルを実行するファイルの場合、私は再びフォルダを作成したり、それをedite意味、それはウィンドウ内のフォルダを監視する方法バッチファイルを実行する

### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO 
    $watcher = New-Object System.IO.FileSystemWatcher 
    $watcher.Path = "C:\Users\uuu\Desktop\new folder\tttt" 
    $watcher.Filter = "*.*" 
    $watcher.IncludeSubdirectories = $true 
    $watcher.EnableRaisingEvents = $true 

### DEFINE ACTIONS AFTER AN EVENT IS DETECTED 
    $action = { $path = $Event.SourceEventArgs.FullPath 
       $changeType = $Event.SourceEventArgs.ChangeType 
       $logline = "$(Get-Date), $changeType, $path" 
       Add-content "D:\Copyof\PSlog.txt" -value $logline 
       cmd.exe /k "D:\Copyof\move.bat" 
       } 

### DECIDE WHICH EVENTS SHOULD BE WATCHED 
    Register-ObjectEvent $watcher "Created" -Action $action 
    Register-ObjectEvent $watcher "Changed" -Action $action 
    Register-ObjectEvent $watcher "Deleted" -Action $action 
    Register-ObjectEvent $watcher "Renamed" -Action $action 
while ($true) {sleep 1} 
+0

これらを使用しないでください。私たちは 'move.bat'を見ることができないので、何かがそこにロックされる可能性があります。その行を削除すると、pslog.txtは更新されますか?変更が有効になる前に古いイベントウォッチャーを削除する必要があるかどうかは不明です。 – Matt

+0

@Matt yesバッチファイルを削除したときに正常に動作し、バッチファイルにロックされているものが何であるか分かりません。なぜなら、バッチファイルを手動で実行すると正常に動作するからです。私は完全なmove.batは長いので、ここに表示することはできません。ロックを止める方法はありますか?バッチファイルのコマンドか何か? – Moudiz

+2

cmd.exeの "/ k"フラグに問題はありませんか?それはコマンドを実行して残すことを意味します。 –

答えて

2

をトリガー文句を言わないだけので、これは公式の答えを取得します。

ではありませんcmd.exeの "/ k"フラグに問題がありますか?それはコマンドを実行して残すことを意味します。 - David Brabant

/Kコマンドを実行してから、CMDプロンプトに戻ります。これはテスト、変数の検査に役立ちます - Matt

代わりに/ Cを使用してください。 - SomethingDark

関連する問題