バッチファイルの変数をパラメーター化

このQ&Aのポイント
  • バッチファイルの変数をパラメーターとしてVBS内の処理に渡すことは可能でしょうか?
  • WindowsXP環境でバッチファイル内の変数をパラメーターとしてVBSコードに渡す方法を教えてください。
  • バッチファイルの変数をパラメーター化してVBS内での処理に利用したいです。具体的な方法を教えてください。
回答を見る
  • ベストアンサー

バッチファイルの変数をパラメーター化

お世話様です。 WindowsXP環境に下記バッチファイルがあります。 バッチコード内は以下の通りです。 ------------------------------------------------ set TARGET_FILE=test.txt ------------------------------------------------ この【TARGET_FILE】という変数内に格納されている【test.txt】という値を パラメーターとしてあるVBS内の変数Aがそれを受け取って処理をする・・・。 という事は可能でしょうか? 上記バッチは数種類あり、【TARGET_FILE】変数内の値がそれぞれ違います。 VBSコード内は以下の通りです。 ------------------------------------------------ Option Explicit Dim FILE FILE = ○○○←ここに上記バッチ内の【TARGET_FILE】変数の値を受け取る。 MsgBox FILE ------------------------------------------------ 各バッチは上記VBSで実行したいのです。 Msgbox程度の処理は当然バッチでも可能ですが、何個もVBSを作成するのは厳しいので、 パラメーターが可能であれば、このVBS1個で済みます。 ご存知の方がおりましたら、お知恵を拝借しても宜しいでしょうか? 何卒宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • hhsession
  • ベストアンサー率100% (1/1)
回答No.3

WScript.Shell オブジェクトのExpandEnvironmentStringsをつかえば、VBS内で環境変数の値を取得できます。 ------------------------------------------------ Option Explicit Dim FILE Dim wshShell Set wshShell = WScript.CreateObject("WScript.Shell") FILE = wshShell.ExpandEnvironmentStrings("%TARGET_FILE%") MsgBox FILE ------------------------------------------------

beckfloyd
質問者

補足

ご回答ありがとうございます。 しかし実際に試した所、VBSを実行したら【%TARGET_FILE%】という変数の値ではない文字がポップアップで表示されました。 VBS内の【FILE】の中にバッチ内の【test.txt】が格納されませんでした。 なぜでしょうか?

その他の回答 (2)

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.2

#1追加 パラメータって意味では %1 ~ %9で指定する方が普通だと思います 例 test.batとしてファイルの中身で scho %1 %2 ・・ %9 などバッチファイルを作って コマンドで test 1 2 3 4 5 6 7 8 9  と打てば %1から%9にそれぞれ代入されます

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.1

環境変数がセットされていれば %環境変数名%  とすることでバッチファイル内で扱うことは可能です

関連するQ&A

  • バッチ処理でファイルの中身を変数に入れるやり方

    あるファイルの中には1行の文字列があります。 このファイルをバッチで読み取り、変数に設定したいです。 例: test.txt abcacbacbacbacbacbacbacbacb test,bat set DATA=[test.txtを読み込んだ値] よろしくお願い致します。

  • VBSでバッチパラメーターと同等のものは

    コマンドプロンプトの「%1」はバッチファイル実行時に付加された最初のパラメータを表します。 VBSでも同じような働きをさせたいのですが書き方がわかりません。 どうすればよいでしょうか。 なお、VBSの実行方法はあるVBSファイルに処理したいファイルをD&Dする事になります。

  • バッチファイルの変数について

    以下のバッチファイルを作成して実行したのですが、PATH_NAMEの変数が 設定されず、ファイルコピーがされません。 どのように、コードを記載すれば良いのでしょうか。 ご教授願います。 REM コピーするファイル数を設定 SET /a FILE_NUM = 2 REM コピー元のパスを設定 SET PATH_P1=C:\Copy01.txt SET PATH_P2=C:\SAMPLE\Copy02.txt REM 上記で設定したファイルを順番にC:\TEST\へコピーする SET /a N=1 :LOOP SET /p PATH_NAME = PATH_P%N% copy %PATH_NAME% C:\TEST\ if "%N%"== "FILE_NUM " (goto EXIT) SET /a N=N+1 goto LOOP :EXIT

  • バッチファイルで2つ以上の変数を連結し、1つの変数にしたい。

    Windows2000でバッチファイルを作っています。 バッチファイルが受け取る2つのパラメータを %1 %2とすると、 それを連結して、新たな変数 A を作りたいのですが、どのようにすれば良いのでしょうか。

  • バッチファイルの変数引継ぎについて

    行き詰ってしまったので、どなたか知恵を授けていただければと思います。 現在、あるソフトウェアの「バッチモード」という機能を使用したバッチを作成していて、構文が > sdcmd batch ***.txt 上記のようにコマンドを羅列したテキストファイルを指定した実行コマンドになります。 sdcmd以降はソフト指定のコマンド以外は使用できず、変数設定ができない為に変数設定とログ保存を兼ねて上記コマンドを記載したバッチを > setlocal EnableDelayedExpansion > set ○=△△△ > set ■=◇◇◇ > call aaa.bat %* >> aaa.log 2>&1 という内容の呼び出しバッチを作成たのですが、テキストファイル内の変数が代入されずに 実行されてしまいます。 cmd上から直接 > setlocal EnableDelayedExpansion > set ○=△△△ > set ■=◇◇◇ > sdcmd batch ***.txt >> aaa.log 2>&1 を実行しても変数の代入は行われませんでした。 cmd上で変数とテキストファイル内のコマンドを手動実行すれば変数は解決できます。 設定した変数を、テキストファイル内の変数値に代入する方法はあるでしょうか。

  • バッチファイル 指定ファイル

    お世話様です。 あるバッチファイルの作成に困っております。 『D:\test』フォルダに下記の3ファイルがあります。 ・CS_090609.txt ・CS_090603.txt ・CS_081215.txt があり、数字の部分は作成された日を表しております。 上記ファイルだと、上から2009/6/5・2009/6/3・2008/12/15に 作成されているとします。 今年の6月9日にあるバッチファイルでCS_090609.txtをそのまま残し それ以外のCS_090603.txt・CS_081215.txtをいったん『D:\test\bkp』フォルダに コピーし、その後、『D:\test』フォルダにある090603.txt・CS_081215.txtを削除 する処理を実施したいのですが、どうもうまく作成出来ません。 せいぜい自分のスキルでは、CS_*.txtですべてのファイルを『D:\test\bkp』にコピーし、 その後、『D:\test』フォルダにあるすべてのファイルの削除しかできません。 お手数ですが、何かご教授願いますでしょうか? ※サンプルコードがあると、助かります。 何卒宜しくお願い致します。

  • バッチファイル 変数を同名のフォルダ内にコピー

    いつも大変御世話になっております。 WindowsXP SP2に【D:\test\bat】フォルダに【test.bat】があります。 上記バッチファイルは以下のようになっています。 コード------------------------------------------------ For /F "delims=" %%i in (D:\test\siteirename\readme.txt) Do Call :Sub %%i :Sub set DATA=%1 copy D:\test\siteirename\in\test.txt D:\test\siteirename\out\%DATA%\test.txt コード------------------------------------------------ readme.txtには1行目に 200910 という文字列しかなく これを変数に入れ、単純にtest.txtを【D:\test\siteirename\out】内に変数と同じ名前のフォルダを さがしてそのフォルダ内にコピーするはずなのに、【D:\test\siteirename\out】内にもコピーされてしまいます。 これはなぜでしょうか? そもそものバッチに問題があるのでしょうか? 方法をご存知の方がいれば、ご教授願いますでしょうか? ※サンプルがあれば、光栄です。 宜しくお願い致します。

  • DOSのバッチで、変数中のファイル名を取り出すには

    DOSのバッチの初心者です。 $FILEという変数に、 C:\Documents and Settings\Administrator\My Documents\okwave.txt のようにファイル名がフルパスで入ってくるとします。このファイル名だけ(okwave.txt)を別の変数に入れたいのですが、うまくいきません。 set f=%$FILE% set g=%%~nf echo %g% 上のように書いてみたのですが、変数gは%~nfという値が入ってしまいます。どう直せばよいでしょうか。

  • バッチファイルで

    バッチファイルでファイル名をキーボードで変更するのは どうすればよいのでしょうか 例:A.txtと言うファイル名をキーボードから2006data.txtにしたいのですが REN C:\A.txt 2006data.txt はわかるのですが2006.txtを変数にして その変数をキーボードで入力する方法(今更バッチファイルでもないのですが?) よろしくお願いします。

  • バッチファイルでテキストの編集は可能ですか?

    こんにちは。 超初心者な質問で申し訳ないのですが、宜しくお願いいたします。 以下の様に、2つのTextファイル(A.txt、B.txt)のデータを合体させて、 新規Textファイル(C.txt)を作りたいのです。  A.txt  ------------  あいうえお  かきくけこ  さしすせそ  ------------    +  B.txt  ------------  abcdefg  1234567890  ------------    ↓  C.txt  ------------  あいうえお  かきくけこ  さしすせそ  abcdefg  1234567890  ------------ VBSファイルを作って、バッチファイルから起動させようと思ったのですが、 VBSファイルを作ったことが無いので何から手をつけて良いのやらあたふたしています。 バッチファイルでの編集の仕方をご存知の方、もしくは VBSファイル作成のヒント(参考になるサイトやコードなど)を 教えていただける方がいらっしゃいましたら、宜しくお願いいたします。 #ちなみに、社内規定でWeb上に落ちてる様なフリーソフトを使うことは出来ません。

専門家に質問してみよう