Windows2003で、.batファイルから.vbsファイルを呼んだ場合、戻り値に文字列を返したり、複数の戻り値を返すといった方法はないでしょうか。


WScript.Quit()では、整数値しか返せず、文字列をどのように取得するのか悩んでます。

やりたいこと
①.iniにエンコードしたパスワードを記述
②.batから.iniを読み込む
③.batからデコード処理を行うvbs呼ぶ
④.batで環境変数にデコードしたパスワードを設定

.bat
FOR /F "eol=; tokens=1,2 delims==" %%I IN (.\password.ini) DO (
SET %%I=%%J
cscript //B //NoLogo .\precmd.vbs %%J %%DECODEPASSWORD
SET %%I=%%J
)

.vbs
Function PasswordDecode(ByVal EncodePassword,ByRef DecodePassword)

ret = PasswordDecode(objArgs(0),objArgs(1))
WScript.Quit

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/04/12 17:47:28
  • 終了:2010/04/13 13:33:05

回答(2件)

id:dev_zer0 No.1

dev_zer0回答回数332ベストアンサー獲得回数252010/04/12 18:02:25

ポイント35pt

> 戻り値に文字列を返したり、複数の戻り値を返すといった方法はないでしょうか。

下記のURLの

「■かっこ内をコマンドとして実行し、その実行結果を解析する」

を参考にしてください

http://www.atmarkit.co.jp/fwin2k/operation/command008/command02....


vbs側では標準出力(Wscript.StdOut)に出力するようにすれば上手くいくはずです。

id:pinkymonk No.2

pinkymonk回答回数172ベストアンサー獲得回数142010/04/12 18:03:42

ポイント35pt

この辺は参考になりませんか。

echoして終了させます。

http://oshiete1.goo.ne.jp/qa4369715.html

以下転記-

[VBS側]

'環境変数に格納したい値をEchoして終了

WScript.Echo kekka

[バッチ側]

for /f "usebackq tokens=*" %%i IN (`call cscript //nologo <vbsフルパス>¥hoge.vbs`) DO @set vbskekka=%%i

  • id:kuruma_neko
    hoge.bat
    -----------------------------------------------------------------------------
    @echo off
    REM OK
    REM for /f "usebackq tokens=*" %%i IN (`call cscript //nologo c:\hoge.vbs`) DO @set vbskekka=%%i

    FOR /F "eol=; tokens=1,2 delims==" %%I IN (c:\password.ini) DO (
    FOR /F "usebackq tokens=*" %%L IN (`call cscript //nologo c:\hoge.vbs`) DO @set %%I=%%L

    echo SET %%I=%L%
    )

    pause

    hoge.vbs
    -----------------------------------------------------------------------------
    WScript.Echo "ZZZZZZZZZZZZZZZ"

    FOR文1つの場合は値が入るのですが、二回目のFOR文の%%Lに値が入りません。
    何かご存知ないでしょうか?
  • id:kuruma_neko
    自己解決しました。echo SET %%I=%L%では値が入っていないのですが、
    実際に環境変数をechoしてみると値が入っていました。
    2回目のFOR文は1行で書いているので、%L%が取れていませんでした。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません