2017-08-15 17 views
0

私は、次のVBScript(check.vbs)を実行しています:特定の実行プロセスに対してループチェックvbsを実行するにはどうすればよいですか?またはプロセスがありませんか?

Set service = GetObject ("winmgmts:") 

For Each Process In Service.InstancesOf("Win32_Process") 
    If Process.Name = "cmd.exe" Then 
     WScript.Echo "cmd running" 
     WScript.Quit 
    End If 
Next 
CreateObject("WScript.Shell").Run("C:\system\file.bat") 

このスクリプトはcmd.exeが稼働しているかどうかをチェックします。実行中の場合、このスクリプトは "cmd running"というメッセージを表示します。実行されていない場合、このスクリプトはバッチファイルC:\system\file.batを開きます。

私が実際に必要としているのは、このスクリプトを実行するときには、cmd.exeが実行されていないことがわかるまでチェックを続ける必要があります。

cmd.exeが実行されていないことが判明した場合のみ、バックグラウンドで繰り返しチェックした後で(ループプログラムのように)file.batを実行する必要があります。簡単な言葉で

check.vbsスクリプトを開いて、それが動作していない見つけたら、それはfile.batを開く必要があり、継続的にcmd.exeが実行中かされていないことを確認する必要があります。

それでも
+0

あなたのコードは、すでに何をすべきあなたは説明しました。または、CMDが見つかったか、 'file.bat'が実行された後に繰り返したいと思っていますか?無限ループで? –

+0

私はプロセスをチェックし続ける連続ループプログラムが必要です。 cmd.exeが処理中に見逃した場合、 'file.bat'を開く必要があります。 incase cmd.exeプロセスは 'check.vbs'プログラムのどこかで開かれ、継続的にチェックする必要があります。プロセスの「継続チェック」。 cmdを開いたままにして閉じるまでチェックを続けます。自動的に開く 'file.bat' –

答えて

0

ない私が正しく質問を理解すれば必ず、しかし、あなたが実際に見て、あなたはこのような何かを行うことができ、特定のプロセスを再起動しますモニターをしたいと仮定:

Set wmi = GetObject ("winmgmts://./root/civm2") 

Sub CheckProcess(name, script) 
    For Each p In wmi.ExecQuery("SELECT * FROM Win32_Process") 
     If p.Name = name Then Exit Sub 
    Next 
    CreateObject("WScript.Shell").Run script 
End Sub 

Do 
    CheckProcess "cmd.exe", "C:\system\file.bat" 
    WScript.Sleep 100 
Loop 
関連する問題