- PR -

WSHでcmdの結果をメッセージボックスで表示したい

1
投稿者投稿内容
見習管理者
ベテラン
会議室デビュー日: 2003/06/17
投稿数: 64
投稿日時: 2007-03-30 11:47
お世話になります。

WSHを使用してcmdで実行した結果をメッセージボックスで表示させたく、
以下のようなスクリプト作成して実行しました。

コード:
Set objShell = WScript.CreateObject("WScript.Shell")
flg = objShell.Run("cmd.exe /c""echo hello") 
WScript.Echo flg



自分が期待した結果は hello という文字が表示されると思ったのですが、
実際は0としか表示されません。

cmdで実行した結果を変数に渡すにはどうしたら良いでしょうか?

よろしくお願いします。
ぴよこ
ベテラン
会議室デビュー日: 2006/12/11
投稿数: 61
投稿日時: 2007-03-30 12:22
Runメソッドでは実行結果は取得できません。
Execを使ったらいけるかと思います。
StdOutかな。

http://www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_03.html

---例追加-----------
set shell=CreateObject("Wscript.Shell")

set objExec=shell.Exec("test.bat")
Do Until objExec.StdOut.AtEndOfStream
msgbox(objExec.StdOut.ReadLine)
Loop
--------------------

[ メッセージ編集済み 編集者: ぴよこ 編集日時 2007-03-30 12:30 ]
見習管理者
ベテラン
会議室デビュー日: 2003/06/17
投稿数: 64
投稿日時: 2007-03-30 14:13
ぴよこ さん、こんにちは。
紹介していただいたURLや例を参考にして以下のように作成しました。

コード:
set shell=CreateObject("Wscript.Shell")
set objExec=shell.Exec("cmd.exe /c echo hello")
Do Until objExec.StdOut.AtEndOfStream 
    msgbox(objExec.StdOut.ReadLine)
Loop 



このスクリプトを実行するとhelloと表示されました。
また、返されるデータが複数行の場合はif文やInStrを使用すれば
特定のデータを表示できることも分かりました。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)