最近のトラックバック

最近のコメント

2017年1月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
無料ブログはココログ

« 2011年3月 | トップページ | 2011年7月 »

2011年5月

2011年5月11日 (水)

呼び出しアプリケーションが終了するまでプロンプトを待たせる方法

Powershellから、例えばnotepadみたいなアプリケーションを起動すると、起動した時点でPowershellのプロンプトが戻ってくる。

notepadが終了するまで次の処理を待たせたい場合は、waitforexit()を使う。

Hey, Scripting Guy! Windows PowerShell を使用してアプリケーションの終了時に通知する方法はありますか

こんな感じ。

PS >notepad

PS >$proc=get-process notepad

PS >$proc.waitforexit()

けど、これはPowershellのV2.0のコマンドなので、V1.0の場合は、

PS >[System.Diagnostics.Process]::Start("notepad").WaitForExit()
PS >Write-Host "Notepad has terminated."

Windows PowerShell スクリプトからアプリケーションを起動した後、アプリケーションが終了するまでスクリプトを一時停止する方法はありますか

コマンドプロンプトからPowershell

こんな感じ。

C:\temp>for /F %i in ( 'powershell -command "$param=\""aaa bbb ccc ddd\"";$param
.replace(\"" \"", \"",\"") " ')  do echo %i

C:\temp>echo aaa,bbb,ccc,ddd
aaa,bbb,ccc,ddd

C:\temp>

加えて、

C:\temp>for /F %i in ("aaa bbb ccc ddd") do echo %i

C:\temp>echo aaa
aaa

C:\temp>

となったので、forループの仕様として、空白で区切られた文字列だと、最初のフィールドの値だけ取ってそれでループは終了となるってことらしい。

コマンドプロンプトからPowershell

おおっ、なるほど。

PowerShell.exe -command "スクリプト" で引用符をエスケープする。

PowerShell.exe -command "スクリプト" で引用符をエスケープする。(その2)

コマンドプロンプトからPowershell1行バッチ

C:\temp>for /F %i in ( 'powershell -command "$param=\""aa bb cc dd\"";$param;"')
do echo %i

C:\temp>echo aa
aa

あれ?なんで?

と思い、試行錯誤の結果、

C:\temp>for /F %i in ( 'powershell -command "$param=\""aa bb cc dd\"";$param.spl
it();"') do echo %i

C:\temp>echo aa
aa

C:\temp>echo bb
bb

C:\temp>echo cc
cc

C:\temp>echo dd
dd

C:\temp>

という風に、望むかたちになった。

« 2011年3月 | トップページ | 2011年7月 »