none
フォルダ監視 RRS feed

  • 質問

  • PowerShell初心者です。win10 64bit。

    PowerShellで、特定のフォルダ(四箇所)を5秒ごとに監視し、それらに*.pdfが追加された際に特定の.exeを起動し、エンターキーを3回押す、完了したら再度5秒ごとの監視状態に戻る、というスクリプトを書きたいと考えています。

    特定のフォルダ(一箇所)に*.pdfがある場合に特定の.exeを起動してエンターキーを3回押すという、ところまでは何とかたどり着きました。

    5秒ごとにフォルダを監視、

    複数フォルダの監視、

    動作完了後に再度監視状態に戻る、

    という部分がわかりません。

    ぜひご教示をお願いできませんでしょうか?

    監視状態の時、できればpowershellの青いウィンドウが最小化で立ち上がるように設定できればベストなのですが。。

    2019年3月30日 4:14

回答

すべての返信

  • 単純に書くとこんな感じ

    $folders = New-Object System.Collections.ArrayList
    $folders.Add("D:\TargetFodler1")
    $folders.Add("D:\TargetFodler2")
    $folders.Add("D:\TargetFodler3")
    $folders.Add("D:\TargetFodler4")
    
    $end = (Get-Date).AddSeconds(60) #とりあえず1分間だけ監視してみる
    while($end -gt (Get-Date))
    {
        Write-Host (Get-Date)
        foreach($folder in $folders)
        {
            if(Test-Path ($folder + "\*.pdf")) #フォルダに*.pdfファイルがあるか調べる
            {
                #*.pdfを列挙してみる
                Get-ChildItem -Path $folder -Filter "*.pdf" | 
                %{
                    Write-Host $_.FullName      
                }
            }
        }
    
       Start-Sleep 5 #5秒間停止
    }
    最小化で起動はPowerShell.exeの引数に-WindowStyle Minimizedを指定してやります

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2019年3月30日 10:13
  • ありがとうございます!やってみますね!
    2019年3月30日 21:00