WSH/外部コマンドを実行する方法・Execメソッド
の編集
Top
/
WSH
/
外部コマンドを実行する方法・Execメソッド
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
#navi(../) * VBScriptで外部コマンドを実行する方法・Execメソッド [#p25089b3] WshShellオブジェクトのExecメソッドを使い、VBScriptで外部コマンドを実行する方法といくつかの実行方法のサンプルを以下に記します。~ 同じような動作するするメソッドとしてRunメソッドがあります。~ Runメソッドに関しては「[[外部コマンドを実行する方法・Runメソッド>WSH/外部コマンドを実行する方法・Runメソッド]]」を参照してください。 #contents #htmlinsertpcsp(win-top.html,win-sp.html) * 関連記事 [#md2c9632] -[[外部コマンドを実行する方法・Runメソッド>WSH/外部コマンドを実行する方法・Runメソッド]] * とりあえずExecメソッドを利用して外部コマンドを起動する [#y29d9dfa] mkdirコマンドを使用し、実行したカレントディレクトリににsakuraディレクトリを作成してみます。 #ref(exec01.zip) Dim oWshShell, oExec Set oWshShell = CreateObject("WScript.Shell") Set oExec = oWshShell.Exec("mkdir sakura") 上記のVBScriptでsakuraディレクトリが作成されます。 * Execメソッドを利用してnotepadを起動してみる [#u81b2f01] #ref(exec02.zip) Dim oWshShell, oExec Set oWshShell = CreateObject("WScript.Shell") Set oExec = oWshShell.Exec("notepad") このVBScriptを起動すると、notepadが起動してVBScriptが終了します。~ nodepadが終了するまで、VBScriptが待っているようにするには、以下のようにします。~ notepadが起動されて、VBScriptはDo While ... Loopに入ります。~ WshScriptExecのStatusプロパティはExecで起動したプロセスが起動中の間は0を示します。~ プロセスが終了すると、Statusプロパティは1となります。~ Do While ... Loop 内でsleep 100することにより、100ミリ間隔でStatusプロパティの値を確認しています。~ notepadを閉じると、Bye!が表示されます。 #ref(exec03.zip) Dim oWshShell, oExec Set oWshShell = CreateObject("WScript.Shell") Set oExec = oWshShell.Exec("notepad") Do While oExec.Status = 0 WScript.Sleep 100 Loop WScript.Echo "Bye!" * 外部コマンドが出力する文字列を取得する [#v147e77a] WshScriptExecオブジェクトのStdOutプロパティ, StdErrプロパティを利用することにより実現できます。~ 以下に、StdOut, StdErrプロパティを利用したVBScriptのサンプルコードと実行結果を記します。 ** WshScriptExec.StdOut サンプル [#d37a7968] このVBScriptのサンプルは、dirコマンドを実行しdirコマンドがSTDOUTとSTDERRに出力した内容を表示します。~ このサンプルではStdErrの文字列は無いので、STDOUTのみ表示されます。~ (dirコマンドを実行するため、cmd /C を追加しています。直接dirと書いたら動きませんでしたので。) #ref(exec04.zip) Dim oWshShell, oExec, oStdOut, oStdErr Set oWshShell = CreateObject("WScript.Shell") Set oExec = oWshShell.Exec("cmd /C dir") Set oStdOut = oExec.StdOut Set oStdErr = oExec.StdErr szStr = "STDOUT" & vbCrLf Do While Not oStdOut.AtEndOfStream szStr = szStr & oStdOut.ReadLine() &vbCrLf Loop WScript.Echo szStr szStr = "STDERR" & vbCrLf Do While Not oStdErr.AtEndOfStream szStr = szStr & oStdErr.ReadLine() &vbCrLf Loop WScript.Echo szStr ** WshScriptExec.StdErr サンプル [#dcc12ab4] 上記のサンプルとほとんど同じです。~ Execメソッドにより起動するdirコマンドに無効なオプションを指定しています。~ このVBScriptを起動するとSTDOUTには何も表示されず、STDERRに無効なパラメータであるメッセージが表示されます。 #ref(exec05.zip) Dim oWshShell, oExec, oStdOut, oStdErr Set oWshShell = CreateObject("WScript.Shell") Set oExec = oWshShell.Exec("cmd /C dir /ABCDEFG") Set oStdOut = oExec.StdOut Set oStdErr = oExec.StdErr szStr = "STDOUT" & vbCrLf Do While Not oStdOut.AtEndOfStream szStr = szStr & oStdOut.ReadLine() &vbCrLf Loop WScript.Echo szStr szStr = "STDERR" & vbCrLf Do While Not oStdErr.AtEndOfStream szStr = szStr & oStdErr.ReadLine() &vbCrLf Loop WScript.Echo szStr #htmlinsertpcsp(win-btm.html,win-sp.html)
タイムスタンプを変更しない
#navi(../) * VBScriptで外部コマンドを実行する方法・Execメソッド [#p25089b3] WshShellオブジェクトのExecメソッドを使い、VBScriptで外部コマンドを実行する方法といくつかの実行方法のサンプルを以下に記します。~ 同じような動作するするメソッドとしてRunメソッドがあります。~ Runメソッドに関しては「[[外部コマンドを実行する方法・Runメソッド>WSH/外部コマンドを実行する方法・Runメソッド]]」を参照してください。 #contents #htmlinsertpcsp(win-top.html,win-sp.html) * 関連記事 [#md2c9632] -[[外部コマンドを実行する方法・Runメソッド>WSH/外部コマンドを実行する方法・Runメソッド]] * とりあえずExecメソッドを利用して外部コマンドを起動する [#y29d9dfa] mkdirコマンドを使用し、実行したカレントディレクトリににsakuraディレクトリを作成してみます。 #ref(exec01.zip) Dim oWshShell, oExec Set oWshShell = CreateObject("WScript.Shell") Set oExec = oWshShell.Exec("mkdir sakura") 上記のVBScriptでsakuraディレクトリが作成されます。 * Execメソッドを利用してnotepadを起動してみる [#u81b2f01] #ref(exec02.zip) Dim oWshShell, oExec Set oWshShell = CreateObject("WScript.Shell") Set oExec = oWshShell.Exec("notepad") このVBScriptを起動すると、notepadが起動してVBScriptが終了します。~ nodepadが終了するまで、VBScriptが待っているようにするには、以下のようにします。~ notepadが起動されて、VBScriptはDo While ... Loopに入ります。~ WshScriptExecのStatusプロパティはExecで起動したプロセスが起動中の間は0を示します。~ プロセスが終了すると、Statusプロパティは1となります。~ Do While ... Loop 内でsleep 100することにより、100ミリ間隔でStatusプロパティの値を確認しています。~ notepadを閉じると、Bye!が表示されます。 #ref(exec03.zip) Dim oWshShell, oExec Set oWshShell = CreateObject("WScript.Shell") Set oExec = oWshShell.Exec("notepad") Do While oExec.Status = 0 WScript.Sleep 100 Loop WScript.Echo "Bye!" * 外部コマンドが出力する文字列を取得する [#v147e77a] WshScriptExecオブジェクトのStdOutプロパティ, StdErrプロパティを利用することにより実現できます。~ 以下に、StdOut, StdErrプロパティを利用したVBScriptのサンプルコードと実行結果を記します。 ** WshScriptExec.StdOut サンプル [#d37a7968] このVBScriptのサンプルは、dirコマンドを実行しdirコマンドがSTDOUTとSTDERRに出力した内容を表示します。~ このサンプルではStdErrの文字列は無いので、STDOUTのみ表示されます。~ (dirコマンドを実行するため、cmd /C を追加しています。直接dirと書いたら動きませんでしたので。) #ref(exec04.zip) Dim oWshShell, oExec, oStdOut, oStdErr Set oWshShell = CreateObject("WScript.Shell") Set oExec = oWshShell.Exec("cmd /C dir") Set oStdOut = oExec.StdOut Set oStdErr = oExec.StdErr szStr = "STDOUT" & vbCrLf Do While Not oStdOut.AtEndOfStream szStr = szStr & oStdOut.ReadLine() &vbCrLf Loop WScript.Echo szStr szStr = "STDERR" & vbCrLf Do While Not oStdErr.AtEndOfStream szStr = szStr & oStdErr.ReadLine() &vbCrLf Loop WScript.Echo szStr ** WshScriptExec.StdErr サンプル [#dcc12ab4] 上記のサンプルとほとんど同じです。~ Execメソッドにより起動するdirコマンドに無効なオプションを指定しています。~ このVBScriptを起動するとSTDOUTには何も表示されず、STDERRに無効なパラメータであるメッセージが表示されます。 #ref(exec05.zip) Dim oWshShell, oExec, oStdOut, oStdErr Set oWshShell = CreateObject("WScript.Shell") Set oExec = oWshShell.Exec("cmd /C dir /ABCDEFG") Set oStdOut = oExec.StdOut Set oStdErr = oExec.StdErr szStr = "STDOUT" & vbCrLf Do While Not oStdOut.AtEndOfStream szStr = szStr & oStdOut.ReadLine() &vbCrLf Loop WScript.Echo szStr szStr = "STDERR" & vbCrLf Do While Not oStdErr.AtEndOfStream szStr = szStr & oStdErr.ReadLine() &vbCrLf Loop WScript.Echo szStr #htmlinsertpcsp(win-btm.html,win-sp.html)
テキスト整形のルールを表示する
添付ファイル:
exec05.zip
643件
[
詳細
]
exec01.zip
857件
[
詳細
]
exec02.zip
679件
[
詳細
]
exec03.zip
619件
[
詳細
]
exec04.zip
750件
[
詳細
]