VBS(WSH)で、コマンドラインアプリを実行して、その標準出力を得る方法。
いろいろ調べた結果、WScript.ShellのExecメソッドを利用する方法と、同じくRunを使う方法があることが判明。
今回は私がFilemaker用に開発したVBS実行プラグインでコマンドラインアプリの出力を得たいとおもっている。
Execメソッドは標準出力から直接データを得ることができるが、Runメソッドでは実行結果をいったんテキストファイルに保存し、その内容を取得する必要がある。
「じゃぁExecで良し!」と思ったら、全然良くなかった。Execメソッドを使うと、コマンドプロンプトが必ず開いてしまう。。。Filemakerで使うことを前提としているので、あまりに不都合だ。
ということで、Runメソッドで実装。
Function KIYO_VBS( dummy ) Dim WshShell, oExec Set WshShell = CreateObject("WScript.Shell") exCommand = "実行するコマンド" Dim tmpFileName tmpFileName = "tmptmptmp.txt" Dim command command = "cmd /S /C " & exCommand & " > " & tmpFileName Dim result result = WshShell.Run(command, 0, true) Dim fso Dim TextFile Dim Text Set fso=CreateObject("Scripting.FileSystemObject") Dim Path Path = tmpFileName Dim fUNICODE Dim BOM Set TextFile = fso.OpenTextFile( Path ) If Not TextFile.AtEndOfStream Then BOM = TextFile.Read(2) fUNICODE=BOM=Chr(&HFF)&Chr(&HFE) Or BOM=Chr(&HFE)&Chr(&HFF) Set TextFile = fso.OpenTextFile(Path,,,fUNICODE) If Not TextFile.AtEndOfStream Then Text=TextFile.ReadAll() Else Text="(Empty)" End If TextFile.Close fso.DeleteFile(tmpFileName) KIYO_VBS = Text End Function WScript.Echo( KIYO_VBS("") )
KIYOVBSプラグインで使うことを前提としているので、なんだかとっても変な書き方でごめんなさい。必要に応じて書き換えて使ってください。
コメントを残す