天使と悪魔選手権

初めて質問させていただきます。

規定によりフリーソフトがインストールできない為
社内で使用するスクリプトをWSH(vbs)で作成しました。

次の段階として、そのスクリプトをユーザーの入力に合わせて作成するスクリプトを
作成しようとしているのですが、一つ問題があり先に進めなくなってしましました。

目的としては InputBox関数でユーザーが入力したパスをWriteLineでスクリプト内に
入れ込みたいんですが、
例えば下記のようなスクリプトを組み、走らせて作成される
「スクリプトA.vbs」を走らせても、もちろん p としか表示されません。

p = InputBox("フォルダのパスを入力してください。")

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.CreateTextFile("スクリプトA.vbs")

objTS.WriteLine "MsgBox ""p"""

objTS.Close


WriteLineの中に変数を代入することは不可能なんでしょうか?
それ以外でもいい方法があればご教授いただきたいです。

よろしくお願いします。

A 回答 (3件)

p = InputBox("フォルダのパスを入力してください。

")

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.CreateTextFile("スクリプトA.vbs")

objTS.WriteLine "MsgBox " & chr(&H22) & p & chr(&H22)

objTS.Close

別に、でいいんじゃない?
「"」の表示方法だけでしょ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!

上記の方法で、意図どおりの結果を得ることができました!!

同じ方法を思いつき、テストしてみたんですが
うまくいかなかったんですよね。。。
おそらくedominn7777さんの言うように「"」の使い方が
まずかったんだと思います。

ありがとうございました!!

お礼日時:2010/12/19 21:18

他の言語では、文字列の中に特定の書式で書くと、その部分が変数の内容が展開される、という機能を持っているものはあります。


例) perl
"MsgBox \"$p\"" # 「$p」が変数$pの内容になる

vbscriptにはそんな機能は無かったと記憶しています。
# 逆に、 p と書いて変数pを展開するようだったら、怖くて1文字の変数名など使えません

すでにあるように、文字列の連結を使いましょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
解決しました。

お礼日時:2010/12/19 20:43

& という演算子で文字列の連結が出来ます。



objTS.WriteLine "MsgBox """ & p & """"
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ただ、上記の部分のスクリプトを置き換えてみましたが
「スクリプトA.vbs」を実行しても何も表示されないです。。。

追記>>No.2さんの回答で解決しました!

お礼日時:2010/12/19 20:42

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


おすすめ情報