電子書籍の厳選無料作品が豊富!

batから動かしたvbsにbatの変数を渡すとき、上手くいくときといかないときがあります。何が違うのでしょうか。

例をあげるとvbsでショートカットをつくるとき、
 変数名.targetpath="%batの変数名%"
はしっかり渡せているのに、
msgboxやwscript.echoのときはうまくいきません。


また、msgboxやwscript.echoで渡す方法や他の場合での渡し方なども一緒に教えてくださるとありがたいです。

質問者からの補足コメント

  • ショートカットのほうはこのままでうまくいっているのです。

    このショートカットのリンク先を指定する構文ではダブルクォーテションでbatで作った変数を囲むだけでvbsに変数を渡すことができるのに、msgboxやwscript.echoではそれだけでは渡すことができません。
    この"%batの変数名%"で渡せるものと渡せないものの違いはなにか知りたいのです。

      補足日時:2018/04/26 00:21

A 回答 (3件)

すみませんが、そのできたショートカットのプロパティを確認していただけませんか?


「リンク先」はどうなってますか?
手許で確認すると、VBSで設定した %batの変数名% のままになってます。
「ショートカットにbatの変数を渡せた」わけではありません。
「%batの変数名%」という文字列を渡しています。
それが batの変数の内容に置き換わるのは、ショートカット側(というかWindows側というか)の動作です。

もし、「リンク先が %batの変数名% の状態」を「変数を渡す」と表現しているなら、誤解を受ける表現だと思います。


wscript.echoもmsgboxも、渡された文字列をそのまま表示します。
環境変数の中身を使いたいなら、
http://www.atmarkit.co.jp/ait/articles/0409/17/n …
とかを使います。
    • good
    • 1
この回答へのお礼

なるほど!
一度、ちゃんと渡せているか調べたくてWscript.EchoでWscirpt.Echo oShellLink.TargetPathと表示させたときにその変数の中身が表示されていたので渡せていると思ってました。
その時点でwindows側がvbsに入力された"%batの変数%"という文字列を勝手に変換させていたんですね。
ありがとうございます。

お礼日時:2018/04/26 17:37

これではわかりませんね~。



>変数名.targetpath="%batの変数名%"

これバッチの中でvbsファイルを生成しているコードの一部ですよね。
vbs自体にはこんな機能は有りません。

この辺も含め、何をどうしたら上手くゆかないのか
正確に書きましょう。

うまくいきません&具体的コードは全く無しでは
話になりませんよ~
    • good
    • 0
この回答へのお礼

分かりにくくてすいません。補足にも書いたように、このショートカットを作ったときのリンク先指定の構文は変数を渡すことは成功しているのです。

しかしこの"%batの変数%"ではmsgbox、wscript.echoでは中の%batの変数%という文字列と認識されてしまいます。
これの解決策を知りたいのです。お願いします。

なおショートカットを作る構文は、WshShellオブジェクトのWshShell.CreateShortCutでショートカットを作ったときのリンク先指定のコマンドです。

お礼日時:2018/04/26 00:44

batでSET する変数は「環境変数」と言われています。


「VBScript 環境変数」で検索すると、取得方法がわかります。

確認はしていませんが
ショートカットの方は、そのまま「%batの変数名%」という文字列で設定されたショートカットになっていて、ダブルクリックしたときに %〜%が変数の中身に展開されるているのではないでしょうか?
ショートカットのプロパティを確認してみましょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2018/04/26 00:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています