ここから本文です

バッチファイルからVBS呼び出しの引数の渡し方、および戻り値の受け取り方について

namapage0117さん

2015/10/2514:22:06

バッチファイルからVBS呼び出しの引数の渡し方、および戻り値の受け取り方について

単純な構成で構わないので、バッチで指定した引数をVBSで受け取り、VBS処理結果を戻り値としてバッチに返すというプログラムコードを.bat,.vbsに分けて教えてください。

その際、引数および戻り値は複数(引数を2つ指定し、戻り値として2つの値をもってくるなど)でお願いします。

回答よろしくお願いします。

閲覧数:
22,621
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

toras9000さん

2015/10/3112:47:47

バッチファイル(コマンドライン)とVBS(WSH)や他プログラムの連携では、引数は任意の数指定する事が出来ますが、戻り値は整数1つしか返ことはできません。(複数の値を返す方法は存在しません)

複数の値を返すようにしたければ、呼び出される側で一時ファイルに保存してバッチでそれを解析するなど、目的に合ったなんらかの工夫が必要です。

一応、バッチファイルとVBSでの引数と戻り値のやりとりの方法を書いておきます。

-- caller.bat -----
@echo off
set /P INP=なにか入力:

rem スクリプトに引数を与えて呼び出しの例。/nologo は好みであっても無くても。
cscript /nologo isnumeric.vbs %INP%

rem 戻り値は環境変数「ERRORLEVEL」に格納される。戻せるのは1個の整数のみである。
rem このエラーレベル値は自分の好きなように意味を決めて利用すれば良いが、
rem 一般的には 0 がエラー無しを示し、0以外でエラーの種類を示す値とする。
echo 戻り値 : %ERRORLEVEL%

rem このif構文では指定値「以上」であるかの判定なので注意
if errorlevel 1 (
echo 数値ではない
) else (
echo 数値である
)

pause
-------------------

-- isnumeric.vbs --
rem 引数の数をチェック
If (WScript.Arguments.Count < 1) Then
WScript.Echo("引数を指定してください")
WScript.Quit(-1)
End If

rem ここでは引数値が数値であるかの判定を行い、
rem 数値であれば 0 を、そうで無ければ 1 を返す。
If IsNumeric(WScript.Arguments(0)) Then
WScript.Quit(0)
Else
WScript.Quit(1)
End If
-------------------

質問した人からのコメント

2015/11/1 13:52:43

回答ありがとうございます。
この方法でやってみます。
やはり戻り値はERRORLEVELでの受け取りになってしまうんですね。
バッチで指定した変数に直接戻り値を代入しようと考えていたのですが
それは厳しいようですね。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。