• ベストアンサー

バッチファイルでファイルからパラメータを指定したいのですが。。。

CALL abc.bat [ ] で [ ] の部分にパラメータをファイルから指定することは出来るでしょうか? 単にそのファイルのパスを記述してもダメでした。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.8

>#3で方法で。。。…改行されて出来てしまいます。 abc.batを def.exe[スペース] で改行しないでスペースの部分までの入力で保存しておけば、 改行されないで追加されます

kapran
質問者

お礼

出来ました。。。有り難うございました。

その他の回答 (7)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.7

バッチファイルとしては、#3の方法でうまくいくと思います。 VBSでやるとすると dim fso, sh, fin dim para set fso=WScript.CreateObject("Scripting.FileSystemObject") set sh=WScript.CreateObject("WScript.Shell") set fin=fso.OpenTextFile("para.txt") para=fin.ReadLine fin.close sh.Run("def.exe " & para) '直接でない場合は、 sh.Run("abc.bat " & para)

kapran
質問者

補足

たびたびすいません。 VBAは(も)全く分かりません。(^_^; > バッチファイルとしては、#3の方法でうまくいくと思います。 #3で方法で。。。 tmp.batが def.exe http://www.yahoo.co.jp/ のように改行されて出来てしまいます。 改行されなければ動作しそうです。。。宜しくお願いします。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.6

>win98です。 for /F構文は、 NT系列(XP含む)です。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

>abc.bat 起動のカタチから def.exe [URL] を実行したいと思っております。 繰り返しになりますが、 para.txtの中身が URL だとして exec.batに for /F "tokens=*" %%i in (para.txt) do call abc.bat %%i としたら、 abc.batに def.exe %1 とすれば良いです。

kapran
質問者

補足

para.txtの中身が http://www.yahoo.co.jp/ のみです。 exec.batに for /F "tokens=*" %%i in (para.txt) do call abc.bat %%i abc.batに def.exe %1 で、 exec.bat の実行で”構文が違います”となります。 abc.batに def.exe http://www.yahoo.co.jp/ で、 abc.bat の実行で def.exe は正常に実行されます。 この期に及んで言うのもすいませんが、win98です。 対処はありますでしょうか? 宜しくお願い致します。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

para.txtの中身が para1 para2 で call abc.bat para1 para2 としたい時 for /F "tokens=1,2" %%i in (para.txt) do call abc.bat %%i %%j とする パラメータの数が2個とか限られていない時は for /F "tokens=*" %%i in (para.txt) do call abc.bat %%i

kapran
質問者

お礼

有り難うございます みなさまのご回答は的確で大変参考になるものでした。 当方の理解不足で質問の仕方が悪かったと思います。 abc.bat は、def.exe を起動する為だけのものです。 その def.exe [ ] でパラメータを渡したいのです。 パラメータは URL 1個で、その URL 1個を収容しているファイルを随時更新して、都度 abc.bat 起動のカタチから def.exe [URL] を実行したいと思っております。

kapran
質問者

補足

すみません。。。補足をお礼の欄に書いてしまいました。 abc.bat は、def.exe を起動する為だけのものです。 def.exe はコマンドラインから def.exe [ ] でパラメータを渡して実行できます。 同じ事をバッチファイルで行いたいと言うことなのですが。。。 パラメータは URL 1個で、その URL 1個を収容しているファイルを随時更新して、都度 abc.bat 起動のカタチから def.exe [URL] を実行したいと思っております。 宜しくお願いします。

  • ballville
  • ベストアンサー率47% (233/487)
回答No.3

「file」というファイルの中身を arg1 arg2 ↑スペース となっているとすると echo abc.bat>tmp.bat type file>>tmp.bat call tmp.bat del /y tmp.bat

kapran
質問者

お礼

有り難うございます みなさまのご回答は的確で大変参考になるものでした。 当方の理解不足で質問の仕方が悪かったと思います。 abc.bat は、def.exe を起動する為だけのものです。 その def.exe [ ] でパラメータを渡したいのです。 パラメータは URL 1個で、その URL 1個を収容しているファイルを随時更新して、都度 abc.bat 起動のカタチから def.exe [URL] を実行したいと思っております。

kapran
質問者

補足

すみません。。。補足をお礼の欄に書いてしまいました。 abc.bat は、def.exe を起動する為だけのものです。 def.exe はコマンドラインから def.exe [ ] でパラメータを渡して実行できます。 同じ事をバッチファイルで行いたいと言うことなのですが。。。 パラメータは URL 1個で、その URL 1個を収容しているファイルを随時更新して、都度 abc.bat 起動のカタチから def.exe [URL] を実行したいと思っております。 宜しくお願いします。

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

まず、このabc.batは君が作ったものかな? もしそうなら、次のバッチを作って試していただきたい。 -1.bat- @echo off echo %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 :next shift echo %0 %1 if "%0" == "" goto :end goto :next :end -2.bat- @echo off call 1.bat a b c d e f g h i j k l m n o p q r s t u v w x y z 1.batは、まず実行ファイル(バッチ名)と9個目までの引数を表示して、その後で一個ずつ引数を前に持ってきて表示するものだ。これが分かれば、バッチで引数を取る方法はバッチりだ。

kapran
質問者

お礼

有り難うございます。 基本的な使い方のヒントを沢山得られそうです。 渡す(指定する)パラメータは1個なのですが、それがその都度変わるためファイルから指定したいと思いました。 そのファイル更新⇒バッチ起動。。。という目論見です。(^_^;

kapran
質問者

補足

abc.bat は、def.exe を起動する為だけのものです。 def.exe はコマンドラインから def.exe [ ] でパラメータを渡して実行できます。 同じ事をバッチファイルで行いたいと言うことなのですが。。。 パラメータは URL 1個で、その URL 1個を収容しているファイルを随時更新して、都度 abc.bat 起動のカタチから def.exe [URL] を実行したいと思っております。 宜しくお願いします。

  • ZENO888
  • ベストアンサー率49% (8944/18242)
回答No.1

abc.bat に記載されているコマンドに引数を指定すれば可能です。 例: abc.bat COPY %1 %2 CALL abc.bat C:\TEMP\BBB.TXT D:\TEMP http://forum.nifty.com/fpcu/dosvcmd/batch.htm

kapran
質問者

お礼

有り難うございます。 http://forum.nifty.com/fpcu/dosvcmd/batch.htm もとても参考になりそうです。

関連するQ&A

  • バッチファイルでのパラメータの渡し方

    Windows2000proです。 コマンドプロンプトから起動するようなツールのショートカットをデスクトップに作成するときみなさんはどうやっていますか? とりあえず思いついたのが、バッチファイルを利用する方法で、ツールのパスを""で囲んだ一行のみを記述したバッチファイルをデスクトップに作成することでうまくいきました。 ところがツールにパラメータを渡そうとするとうまく起動しなくなりました。 バッチファイルの内容は、 "ツールの絶対パス\ツール名 -パラメータ" ですが、これではだめなようです。 バッチファイルにおいて、パラメータを指定したツールの起動はどうやればよいのでしょうか? よろしくお願いします。

  • バッチファイル 戻り値

    いつも大変御世話になっております。 WindowsVISTA環境で以下バッチ【ABC.bat】が稼動します。 "ABC.bat"------------------------------------------------- @ECHO ON set bat_name="ABC.bat" call DEF.bat echo %bat_name% は戻り値 %ERRORLEVEL% を受け取りました。 "ABC.bat"------------------------------------------------- 上記バッチの構文では以下バッチDEF.batを起動させ、ERRORLEVELを取得させます。 "DEF.bat"------------------------------------------------- @ECHO ON set bat_name="DEF.bat" exit /b 10 "DEF.bat"------------------------------------------------- 実行結果は予想していたものと違っていました。 予想していた実行結果 : "ABC.bat" は戻り値 10 を受け取りました。 実際の実行結果     : "DEF.bat" は戻り値 10 を受け取りました。】 %ERRORLEVEL%のみを取得したかったのですが DEF.bat の set bat_name="DEF.bat" までも取得してしまいました。 bat_name はどうしても "ABC.bat"とCALLする側の変数を使用したいのですが 制御は難しいでしょうか? echo %bat_name% は戻り値 %ERRORLEVEL% を受け取りました。 の直前に 再度 set bat_name="ABC.bat" と記述しなければダメでしょうか? 尚、都合上、ECHO文と変数名は変えたくありません。 もしご存知の方がいらっしゃるようでしたら、お手数ですが 実現可能かどうかをご回答願いますでしょうか? 以上、何卒宜しくお願い致します。

  • バッチファイル(.BAT)のパラメータ

    バッチファイル(.BAT)をWindows2000Serverで実行する際、パラメータ付きで実行します。 2000Serverの1日前の日付をパラメータにしたいのですが可能でしょうか?(昨日のデータを抽出する) 以上、お願いいたします。

  • バッチファイルFTP -sで引数を渡せますか?

    どなたか教えて下さい。 TEST.batというバッチファイルの処理の中で、 FTP -s:D:\ABC.bat でファイルを指定して、FTPのputを実行させたいです。 putしたいファイルはTEST.bat内でsetで指定しています。そのsetで指定したファイルを引数などで、\D\ABC.batへ送る方法はないでしょうか?

  • コマンドプロンプトでファイル読み込み

    For文を使って、パラメータファイルから値を読み込みたいのですが、 "C:\Documents and Settings\~"等(パスにスペースが含まれる場合)に置かれた場合、 ファイルを読み込んでくれず困っております。 ()内のファイル指定で、""(ダブルクォーテーション) や'(シングルクォーテーション)で囲むこともしてみましたが、ダメでした。。 どう指定すればよいのかご教授下さい。 よろしくお願いいたします。 【パラメータファイル(tmp.txt)】 ABC=12345 【バッチファイル(test.bat)】 for /F "delims== tokens=1,2" %%A in (D:\tmp.txt) do if %%A==ABC set value_1=%%B echo %value_1% pause

  • バッチファイルコマンドについて

    毎度お世話になっております。 バッチファイルコマンドで、 わからないことがあります。 ご存知の方がおられましたら、 アドバイスを頂けますようよろしくお願い致します。 (質問内容) AAA.batファイル内からbbb.bat、ccc.batを同時にコールしたいのですが、 記述方法がわからないので教えて頂けますでしょうか。 よろしくお願い致します。

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

    @cmd /k 上記の内容で「a.bat」というファイル名で保存しました。 この保存したファイルをダブルクリックすると、バッチファイルが格納されてるフォルダのパスがコマンドプロンプト上に表示されます。 パス表示後に、いろいろな動作(「echo~」など)を実行したいと思っているんですが、うまくいきません。 どうやら一番上の「@~」を記述したものは、そのあとに「echo~」などを記述しても実行してくれないみたいです。 「@cmd /k」実行後に何か(「echo~」など)を実行するにはどうしたらいいですか?

  • MS-DOSバッチファイルにおけるパラメータ入力

    初歩的な質問で失礼します。 abc.exe という実行ファイルがパラメータとして 「para1,para2,para3」と3つのパラメータを 持っていたします。 そこで、  abc.exe para1 para2 para3 とコマンド投入するのではなく、バッチファイルで実行したいのです。 さらに、実行する際には、 **************************** > abc.exe を実行します > para1 を入力して下さい  (→aaaを入力) > para2 を入力して下さい  (→bbbを入力) > para3 を入力して下さい  (→cccを入力) **************************** といった具合に、各パラメータのキーボード入力を個々に待ち合わせるようにしたいの ですが、このようなことは可能でしょうか? 又、可能な場合バッチファイルはどのように作成すればよろしいでしょうか?

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

    ファイルの中身を抽出するバッチを作成しました。 そのバッチファイルを実行し、test.csvというファイル名をつけて出力できたんですが、出力パスも指定することは可能なんでしょうか? find.bat > test.csv

  • DOSバッチにて外のファイルの指定行を読む

    今回、皆様の助けを頂き、DOSバッチを作成して仕事をやることができました。 感謝します。しかしながら、入出力に関して、もう少し理解したいと思います。 特に、外のファイルの指定行の内容を読み出すことはできないでしょうか? 外のファイルの最初の行を読み出す @echo off set /p abc=< c:\mylog.log echo %abc% 外のファイルの最後の行を読み出す @echo off FOR /F "delims= " %%a IN (c:\mylog.log) DO (set abc=%%a) echo %abc% ----------- DOSのHelpを調べてみましたが、 For のパラメータについて、よく理解できていません。 パラメータをうまく使えば、ファイルの指定行を読み出せる気がするのですが、 調べ切れていません。 宜しくお願いします。

専門家に質問してみよう