質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

1回答

1300閲覧

batとvbsで行っている二つの処理を一つのvbsに纏めたい

pfqywb8w

総合スコア6

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2021/12/10 15:43

編集2021/12/10 15:45

前提・実現したいこと

一つ目のウィンドウに入力した変数を二つ目のウィンドウ(実際には表示されない)に渡したいです(想定している具体的な結果は後述)。
現状、a.batとb.vbsの二つのファイルを使って下記のように書いています。

  • a.bat
set /p hoge="hoge?" b.vbs
  • b.vbs
Set ws = CreateObject("Wscript.Shell") ws.run "cmd /c echo %hoge%&&pause", vbhide

ただ、このように簡単な処理のために二つのファイル使うのは冗長なので、可能ならば一つのvbsにまとめたいです。

  • c.vbs
Set ws = CreateObject("Wscript.Shell") ws.run "cmd /c set /p hoge=""hoge?""&&c.vbs" ws.run "cmd /c echo %hoge%&&pause", vbhide

当然ですが、c.vbsを実行すると一回目の3行目の処理は2行目の処理を待たずに実行されてしまう上に、2行目の処理は何らかの値を入力する限り何度でも実行されてしまいます。
要するに、c.vbsの二行目の処理は一回目の呼び出しのときのみ、三行目の処理は二回目以降の呼び出しのみにすれば良いことは分かっているのですが…どのように書けば良いか、お知恵を拝借したく存じます。
何卒よろしくお願い申し上げます。

想定している挙動

  • 一つ目のウィンドウ
hoge?piyo
  • 二つ目のウィンドウ(一つ目のウィンドウの入力を待ってから開く)
piyo

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

全く同じにする必要がなくて、文字列を入力するのなら、VBScriptのInputBox関数を使うのが簡単です。

コマンドプロンプトの画面を出した上でそこで入力して、ということであれば、面倒です。

投稿2021/12/10 17:37

otn

総合スコア84806

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pfqywb8w

2021/12/11 00:30 編集

ご回答ありがとうございます。概ね想定通りのものを作成できました。 ```VBScript set ws = CreateObject("Wscript.Shell") input = InputBox("hoge?") set env = ws.Environment("Process") env.Item("hoge") = input ws.run "cmd /c echo %hoge%&&pause", vbhide ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問