• 締切済み

実行結果を戻り値で取得したい

MS-DOSバッチの実行結果を文字列で取得したいです。 イメージ例としては、下記のようなバッチ2つがあり、 バッチAを起動します。そうすると実行結果の戻り値として 「TEST」という文字列が取得できたら良いです。  ※下記例では「ERRORLEVEL」に入っているようなイメージです。 しかしながら、ERRORLELVEに格納できるのは数値のみの為、 エラーになってしまいます。 どうすれば、実行結果を戻り値で取得できるでしょうか? お手数ですが、MS-DOSで不可能な場合、VBScriptやWSHでも かまいませんので、処理をキックしてその戻り値を文字列で取得する方法を お教えください。お願いいたします。 -------------------------------- 例 【バッチA】 call バッチB echo %ERRORLEVEL% 【バッチB】 exit /b "TEST" -------------------------------- と実行し

みんなの回答

回答No.1

環境変数を使うのはどうでしょうか。 【bat_a.bat】 set RETVAL= echo RETVAL=%RETVAL% call bat_b.bat echo RETVAL=%RETVAL% 【bat_b.bat】 set RETVAL=TEST

関連するQ&A

  • バッチファイル 戻り値

    いつも大変御世話になっております。 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文と変数名は変えたくありません。 もしご存知の方がいらっしゃるようでしたら、お手数ですが 実現可能かどうかをご回答願いますでしょうか? 以上、何卒宜しくお願い致します。

  • FOR文内でサブルーチンをCALLした際の、ERRORLEVELの取得

    ファイルをコピーしてからFOR文により6回処理を繰り返すような バッチファイルを作成しようと思っています。 そのFOR文内でコールしたサブルーチンのERRORLEVELがうまく取得できません。ファイルコピーをしなければ値が取得できるのですが。。。 何が 原因なのか皆目見当つかずで行き詰ってしまいました。 どなたか 教えてください。 宜しく御願いします。 @echo off copy test.txt test.txt.bak for /L %%A in (0,1,5) do ( call :test echo 戻り値:%ERRORLEVEL% ) :test exit /b 99

  • バッチファイルで文字列の検索結果件数を取得したい

    バッチファイルでテキストファイルに含まれる、文字列を検索し、その検索結果個数は取得可能でしょうか? 【例】test.txt 【内容】abcdefg12345xyza テキストファイルは1レコードです。 "a"で検索したときは2を取得したいのです。。。 バッチファイルだけじゃ無理ですかね(><) よろしくお願いします。

  • bashで実行したsqlの実行結果の戻り値

    bashで実行したsqlの実行結果の戻り値 bashを使用して、DB間の通信の監視を行なおうとしております shellの内容はサーバAでoracleに接続(sqlplus)して、 そこからサーバBへ接続(connect)するだけの記述です。 この時、 MSG=`sqlplus ID/PASSWORD@SID @connect.sql` echo XXX で、@connect.sqlの実行結果を戻り値としてechoさせたいのですが、 この場合、どのように指定すればよいのでしょうか? (上記の状態でshellを実行すると、connect側ではなく、 sqlplusの戻り値が戻ってきてしまいます) ※conenct.sql connect 接続先DBのID/PASSWORD@接続先 exit だけのsqlで、こちらの接続確認は取れております

  • VBSからbat実行(WMI)して戻り値を取得する

    WSH初心者です。 WSH(remote.vbs)からWMI使用で別サーバのA.batを実行しているのですが、 A.batの戻り値はどのように取得すれば良いのでしょうか? -■remote.vbs(一部抜粋)------------------------------------------ ' #WMI に接続 Wim32_Process クラスを取り出す Set clsProcess = GetObject("winmgmts:{impersonationLevel=impersonate}" & "!" & リモート先PC & "Win32_Process") ' #プロセスの作成 lngResult = clsProcess.Create(A.bat, null, null, processId) -------------------------------------------------------------- -■A.bat------------------------------------------ exit /B %RetCode% ------------------------------------------------- A.batで返している%RetCode%の値をremote.vbs側で取得したいのです。 どなたかご存じでしたらご教授の程よろしくお願い致します。

  • 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 --------------------------------------------------

  • DOSコマンドで結果として出力される文字列を変数に格納したい

    DOSコマンドで、あるソフト(タスク)が実行されていればプログラムAを、そうでなければプログラムBを実行するバッチを組んでいます。タスクの一覧はtasklistで取得できることが分かり、対象となるタスクおみを抽出する方法も分かりました。しかし、この後どうすれば良いかが分かりません。対象となるタスクが存在した場合としない場合では出力される文字列が違います。この文字列を比較することで分岐が実現できると思ったのですが、それには文字列を変数に格納する必要があります。以下のように記述し、うまくいくことを期待したのですが、駄目でした。 set STATUS=tasklist /fi "Imagename eq タスク名" tasklist /fi "Imagename eq タスク名"の部分が関数であれば、戻り値があってそれを格納することができるのではないかと思ったのですが、できませんでした。このケースに限ったことではありませんが、各コマンドの実行結果として出力される文字列を変数に格納するにはどうすれば良いのでしょうか?VBSやWSHなどではなく、.bat形式の場合でお願いします。

  • SQLファイル内のSQL実行ログ取得

    すいません、教えてください。 以下のようなCMDバッチを作成しました。 TEST.cmd------------ sqlplus -s ID/PASS@DB @MAIN.sql 'SUB1.sql' 'SUB2.sql' > MAIN.log echo %ERRORLEVEL% MAIN.sql------------ @&1 @&2 commit; quit; これを実行した場合、MAIN.sqlの最後のコマンドquit;の 実行結果を返してきているのでしょうか? SUB1.sql、SUB2.sqlで失敗していても%ERRORLEVEL%で0が返ってきます。 MAIN内のそれぞれのsqlの実行結果ログを取得することは可能でしょうか? SUB.sqlの内容はいずれも単純なMERGE文です。 識者の方がいればご教示いただきたく存じます。 よろしくお願いいたします。

  • Runtime.execでの実行結果の取得

    初歩的な質問ですいませんが、execでバッチファイルを実行し、 その結果を取得したい場合、getInputStreamとgetErrorStream以外に 取得する方法はあるのでしょうか? バッチファイルを単独で実行した場合に画面出力されるエラーが、 なぜか取得できないでいます。 ただ、実行しているコマンドはDOSコマンドではなく、 別アプリのEXEファイルになります。 (DOSコマンドの結果は正常に取れました)

    • ベストアンサー
    • Java
  • 戻り値を使う問題について

    <問題> 以下のクラスを作成せよ。 「mainメソッド」 1)Aisatuクラスのオブジェクト作成。 2)Aisatuクラスのohayouメソッドを呼び出し、  戻り値を取得して表示する。 3)Aisatuクラスのkonnitiwaメソッドを呼び出し、  戻り値を取得して表示する。 4)Aisatuクラスのkonbanwaメソッドを呼び出し、  戻り値を取得して表示する。 「Aisatuメソッド」 ohayouメソッド ・「おはようございます」という文字列を戻り値とする。 ・「こんにちは」という文字列を戻り値とする。 ・「こんばんは」という文字列を戻り値とする。 <実行結果> おはようございます こんにちは こんばんは ************************************************************ 上記の質問についてのプログラムなんですが、いまいちクラスとか メソッドとかよく分からなくて、ちゃんと実行できません。 コンパイルは通るのですが、実行しようとすると、 java.lang.NoSuchMethodError のエラーが出てしまいます。 メソッドが見つからないということでしょうか? 間違っているところを教えて下さい。 よろしくお願いします。 class Aisatu { private String oha; private String koni; private String koba; public String aiOhayou(String o) { oha = o; return oha; } public String aiKonnitiwa(String n) { koni = n; return koni; } public String aiKonbanwa(String b) { koba = b; return koba; } } class Greet02 { public static void main(String args[]) { Aisatu as = new Aisatu(); as.aiOhayou("おはようございます"); String ohayou = as.aiOhayou("おはようございます"); System.out.println(ohayou); as.aiKonnitiwa("こんにちは"); String konnitiwa = as.aiKonnitiwa("こんにちは"); System.out.println(konnitiwa); as.aiKonbanwa("こんばんは"); String konbanwa = as.aiKonbanwa("こんばんは"); System.out.println(konbanwa); } }

    • ベストアンサー
    • Java

専門家に質問してみよう