2016-05-01 10 views
-2

実行可能ファイルがインストールされているスクリプトを作成しようとしていますが、バッチファイルはインストールされたプログラムのプロパティファイルにプロパティを追加します。私はdo/untilループdo/untilループの後でスクリプトを続行します

do 
{ Start-Sleep -S 2 
} 
until (Test-Path $batfile) 

今ではプロセスが利用可能であるかどうかを確認してから.batのプロパティcmdを実行する必要があります

if ($(Get-Process -name $process -ErrorAction SilentlyContinue) -ne $null) 
{ 
c:\file.bat set-property xyz true 
} 

にもう一つのアイデアを書いたバッチファイルをチェックするために

ファイルがロックされてからプロパティを実行するまでファイルをチェックすることです。

次のコマンドがループを終了するのを待たないという問題があります。 do/untilループが終了するまで、最初に待機するように次のコマンドとループを設定する必要はありますか?

+3

を。 '$ BatFile'パスが有効になる前に、do-untilループの背後にあるコードは実行されません。 –

+0

プロセスは後で表示されます。 if cmdの実行を遅延させてループさせることで、プロセスが確実に行えるようにすることができます。また、プロパティを設定するには失敗しませんか? – oalie37

+0

Stackoverflowへようこそ[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)の1つである可能性があります。 – user4317867

答えて

1

だからあなたの質問は次のとおりです。

私は プロセスが同様にアップし、宿泊施設には失敗しません設定することを保証できるように、私は/ループ場合はcmdの実行を遅らせることができますどのように?

だけプロセスが起動するまで、わずか2秒で寝whileループを使用します。私はあなたの質問を理解していない

while((Get-Process -name $process -ErrorAction SilentlyContinue) -eq $null) 
{ 
    Start-Sleep -Seconds 2 
} 
c:\file.bat set-property xyz true 
+0

それは完璧に役立ち、働きます。ありがとう – oalie37

関連する問題