2017-11-28 15 views
0

Powershellを知っている人にとってはおそらく簡単な質問です。私はすでにthesetheseのような同様の質問に対するいくつかの回答の提案を実装しようとしました。私はフォルダを監視し、変更の場合にログファイルを書き込むファイルウォッチャーを持っています。これはうまくいく。PowershellscriptのFileSystemWatcherを使ってPythonファイルを実行する

私ができなかったことは、追加のPythonスクリプトを実行することでした。私はどんなアドバイスにも感謝しています。

$folder = 'F:\myPath\myFolder' # Enter the root path you want to monitor. 
$filter = '*.*' # You can enter a wildcard filter here. 

# In the following line, you can change 'IncludeSubdirectories to $true if required.       
$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'} 

# Registered events: 
Register-ObjectEvent $fsw Renamed -SourceIdentifier FileRenamed -Action { 
$OldName = $Event.SourceEventArgs.OldName 
$name = $Event.SourceEventArgs.Name 
$changeType = $Event.SourceEventArgs.ChangeType 
$timeStamp = $Event.TimeGenerated 
Write-Host "The file '$name' was $changeType at $timeStamp" -fore white 
Out-File -FilePath F:\myPath\myLogFile.txt -Append -InputObject "The file $name was $changeType at $timeStamp" 
python F:\myPath\myPythonScript.py} 

Powershell ISEでどうすれば実現できますか?

答えて

0

Powershellコンソールを使用すると、ISEよりもはるかに多くの運が得られます。 PythonがPATHに追加されている場合は、python F:\myPath\myPythonScript.py

のように簡単です。Pythonスクリプトが値を返す場合、それらをPowershellに戻すには、それらをスクリーンに印刷する必要があります。それらが返される順序の配列。

+0

あなたが正しいです:コンソールに 'python F:\ myPath \ myPythonScript.py'コマンドだけを入力すると、Pythonスクリプトが実行されます。しかし、Powershellコンソールでスクリプト全体(ファイルシステムワッチャーを含む)を実行すると、監視フォルダ内のファイルを変更するとPythonスクリプトが実行されません。では、ファイルが監視フォルダ内で変更された場合、Pythonスクリプトを実行するにはどうすればよいですか? – Chris

+0

EventSubscriberは、 '-Action'の後の中カッコでコードを実行します。そこのコードは正しく実行されていますか?たとえば、ログファイルに書き込むのですか? –

+0

はい、コードは正しく実行され、ログファイルが書き込まれます。ただし、コンソールでpythonスクリプトは実行されません。私は使用している質問とコードを編集しました。 – Chris

関連する問題