• ベストアンサー

VBからBATファイルを起動して戻り値の取得方法

VBからBATファイルを起動して戻り値(エラーコード)を もらうにはどうすれば良いのでしょうか? WshShellという関数を使用することは、何となく分かるのですが 宜しければサンプルを教えていただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>WScript.CreateObjectの >ところで"オブジェクトが必要です"となってしまいます。 VBのときは、CreateObjectですね。

zerokara
質問者

お礼

おっしゃるとりでした。うまくいきました。 この度は有難うございました。

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1
参考URL:
http://www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_02.html
zerokara
質問者

お礼

早速の回答有難う御座います。 色々試行錯誤して以下のように書いてみましたが、WScript.CreateObjectの ところで"オブジェクトが必要です"となってしまいます。何か参照設定に漏れが あるのでしょうか?宜しくお願いします。 Private Sub Command1_Click() Dim Fs As New FileSystemObject Dim ws As WshShell Dim we As WshExec Dim tx As TextStream Dim ERR_FLG As String Set ws = New WshShell Set we = ws.Exec("test1.bat > test1.log") Set Fs = WScript.CreateObject("Scripting.FileSystemObject") Set tx = Fs.OpenTextFile("test1.log", 1) Do Until tx.AtEndOfStream tLine = tx.ReadLine If InStr(tLine, "ERRORLEVEL") <> 0 Then ERR_FLG = Mid(tLine, 11, 1) End If Loop      msgbox ERR_FLG End Sub test1.bat @echo off バックアップ処理 IF NOT %ERRORLEVEL% == 0 GOTO ERROR echo 正常終了しました。 GOTO END :ERROR ECHO バックアップ処理がエラーを返して終了しました。 :END ECHO ERRORLEVEL %ERRORLEVEL%

関連するQ&A

  • batファイルから起動したscrファイルの戻り値を取得する方法

    DOSのbatファイル上から、ftpのスクリプトを 起動していますが、ftpが失敗した際に戻り値を batファイルに返したいのですが、方法がわからず 困っております。どなたか教えてください。 宜しくお願いします。 test1.bat ftp -s:C:\VB\ftp_test.scr copy 命令 ftp_test.scr open xxx.xxx.xxx.xxx login pass put 命令 quit

  • WshShellから起動したbat(ftp)の応答メッセージを取得するには

    下のbatファイルをDosプロンプトから起動した場合は resulf.logに230 User zerokara logged in.と出力されますが、 これをVBからWshShellオブジェクトのExecメソッドで起動しますと resulf.logにftpの応答メッセージ(230 User zerokara logged in.など)が 出力されませんのでfindできずエラーを返してしまいます。 よろしければ、この現象の意味とWshから起動した場合にresulf.logに ftpの応答メッセージを出力する方法を教えてください。 宜しくお願いします。 test1.bat ftp -s:C:\VB\ftp_test.scr >resulf.log type resulf.log | find /i "230" IF NOT %ERRORLEVEL% == 0 GOTO ERROR copy 命令

  • バッチファイル 戻り値

    いつも大変御世話になっております。 WindowsVISTA環境で以下バッチ【ABC.bat】が稼動します。 "ABC.bat"------------------------------------------------- @ECHO ON set bat_name="ABC.bat" call DEF.bat echo %bat_name% は戻り値 %ERRORLEVEL% を受け取りました。 "ABC.bat"------------------------------------------------- 上記バッチの構文では以下バッチDEF.batを起動させ、ERRORLEVELを取得させます。 "DEF.bat"------------------------------------------------- @ECHO ON set bat_name="DEF.bat" exit /b 10 "DEF.bat"------------------------------------------------- 実行結果は予想していたものと違っていました。 予想していた実行結果 : "ABC.bat" は戻り値 10 を受け取りました。 実際の実行結果     : "DEF.bat" は戻り値 10 を受け取りました。】 %ERRORLEVEL%のみを取得したかったのですが DEF.bat の set bat_name="DEF.bat" までも取得してしまいました。 bat_name はどうしても "ABC.bat"とCALLする側の変数を使用したいのですが 制御は難しいでしょうか? echo %bat_name% は戻り値 %ERRORLEVEL% を受け取りました。 の直前に 再度 set bat_name="ABC.bat" と記述しなければダメでしょうか? 尚、都合上、ECHO文と変数名は変えたくありません。 もしご存知の方がいらっしゃるようでしたら、お手数ですが 実現可能かどうかをご回答願いますでしょうか? 以上、何卒宜しくお願い致します。

  • SHELLを使ったファイル起動について

    現在、JavascriptからSHELLを使って Excelファイルを起動さようと思っています。 ファイル名が英数字だと起動できるのですが 日本語だと起動できません。 「指定されたファイルがみつかりません」という スクリプトエラーが表示されます。 ---------------------------------------------- function wshell(){ wshshell=new ActiveXObject("WScript.Shell"); wshshell.run("T:\\sample.xls"); } ---------------------------------------------- 原因、対処方法をご存知の方、 教えていただけませんでしょうか。 よろしくお願いいたします。

  • Excelマクロ戻り値をバッチファイルで取得したい

    下記のように、Windowsのコマンドプロンプトから バッチファイル(test.bat)を実行して、 バッチファイルの中から、 VBスクリプトファイル(test.vbs)を実行して、 VBスクリプトファイルの中から、 Excelブック(Book1.xlsm)の中の main()というマクロを実行させていますが、 以下のことがよく分からないので教えてください。 (問1) Excelマクロmain()の戻り値(result)を、    VBスクリプトファイル(test.vbs)の中で    利用したいのですが、Excelマクロからの    戻り値を取得する方法がよく分かりません。    例えば、WScript.Echoでresultの値を表示するには、    どのように記述すればよいのでしょうか。 (問2) Excelマクロmain()の戻り値(result)を、    バッチファイル(test.bat)の中で    利用したいのですが、VBスクリプトからの    戻り値を取得する方法がよく分かりません。    例えば、echoでresultの値を表示するには、    どのように記述すればよいのでしょうか。 よろしくお願いします。 ---test.bat--------------------------------------- cscript C:\test\test.vbs /A:"C:\test\Book1.xlsm" /B:"main" (ここでechoなどでresultの値を表示したい) -------------------------------------------------- ---test.vbs--------------------------------------- Dim oApp Set oApp = CreateObject("Excel.Application") oApp.Visible = False Set objParm = WScript.Arguments.Named oApp.Workbooks.Open objParm("A") oApp.Run objParm("B") oApp.DisplayAlerts = False oApp.Quit oApp.DisplayAlerts = True (ここでWScript.Echoなどでresultの値を表示したい) -------------------------------------------------- ---Main() (Excelマクロ)--------------------------- Function main() As Integer (処理)  main=result End Function --------------------------------------------------

  • BATファイル起動について

    お世話になっております。 javaのclassを実行する 以下の処理を行うbatファイルを作成したところ (ディレクトリ移動→classpathの設定→javaコマンド) cmd.exeよりこのbatファイルを実行すると 正常に動作してくれるのですが batファイルをダブルクリックすると javaを正常に実行しません。 errorや例外も特に発生していません。 batファイルを cmd.exeからの実行するのと ダブルクリックで実行するのには 何か違いがあるのでしょうか? よろしくお願いします。

  • exeファイルからbatファイルを起動させる方法を教えてください。

    すみません。exeファイルからあるbatファイルを起動させるexeファイルを教えてください。お願いします。

  • Fortranプログラムの戻り値を得る方法

    Fortranで作成したプログラム(exeファイル)をC言語プログラム(exeファイル)から 起動しようと考えています。 Fortran側のプログラム終了コードを取得したのですが、 そもそもFortranで作成したプログラムは起動元プログラムに戻り値を返せるのですか? (C言語のmain関数の戻り値のように) できない場合の解決策として、ファイルに終了コードを書いて両プログラム で共有しようと考えています。この方法は妥当でしょうか? 当方、Fortranは素人です。詳しい方がいましたら教えて下さい。

  • VBでDOSプロンプトで実行した戻り値を拾いたい

    VBからDOSプロンプトを起動し、 ある処理を流します。 その処理は、戻り値があって、それをVBで判断したいのですが、 どうやればよいのでしょうか?

  • batからvbs起動

    バッチファイルからVBSファイルを起動したいと思いsample.batに以下の記述をしました。 「cscript //NoLogo "test1.vbs"」 するとプロンプト上に上記メッセージが繰り返し(無限ループ?)表示されてしまいます。 バッチからVBSファイルを起動するには何かコマンドが必要なのでしょうか?