- ベストアンサー
バッチファイルでファイルからパラメータを指定したいのですが。。。
CALL abc.bat [ ] で [ ] の部分にパラメータをファイルから指定することは出来るでしょうか? 単にそのファイルのパスを記述してもダメでした。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
>#3で方法で。。。…改行されて出来てしまいます。 abc.batを def.exe[スペース] で改行しないでスペースの部分までの入力で保存しておけば、 改行されないで追加されます
その他の回答 (7)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
バッチファイルとしては、#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)
補足
たびたびすいません。 VBAは(も)全く分かりません。(^_^; > バッチファイルとしては、#3の方法でうまくいくと思います。 #3で方法で。。。 tmp.batが def.exe http://www.yahoo.co.jp/ のように改行されて出来てしまいます。 改行されなければ動作しそうです。。。宜しくお願いします。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>win98です。 for /F構文は、 NT系列(XP含む)です。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>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 とすれば良いです。
補足
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)
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
お礼
有り難うございます みなさまのご回答は的確で大変参考になるものでした。 当方の理解不足で質問の仕方が悪かったと思います。 abc.bat は、def.exe を起動する為だけのものです。 その def.exe [ ] でパラメータを渡したいのです。 パラメータは URL 1個で、その URL 1個を収容しているファイルを随時更新して、都度 abc.bat 起動のカタチから def.exe [URL] を実行したいと思っております。
補足
すみません。。。補足をお礼の欄に書いてしまいました。 abc.bat は、def.exe を起動する為だけのものです。 def.exe はコマンドラインから def.exe [ ] でパラメータを渡して実行できます。 同じ事をバッチファイルで行いたいと言うことなのですが。。。 パラメータは URL 1個で、その URL 1個を収容しているファイルを随時更新して、都度 abc.bat 起動のカタチから def.exe [URL] を実行したいと思っております。 宜しくお願いします。
- ballville
- ベストアンサー率47% (233/487)
「file」というファイルの中身を arg1 arg2 ↑スペース となっているとすると echo abc.bat>tmp.bat type file>>tmp.bat call tmp.bat del /y tmp.bat
お礼
有り難うございます みなさまのご回答は的確で大変参考になるものでした。 当方の理解不足で質問の仕方が悪かったと思います。 abc.bat は、def.exe を起動する為だけのものです。 その def.exe [ ] でパラメータを渡したいのです。 パラメータは URL 1個で、その URL 1個を収容しているファイルを随時更新して、都度 abc.bat 起動のカタチから def.exe [URL] を実行したいと思っております。
補足
すみません。。。補足をお礼の欄に書いてしまいました。 abc.bat は、def.exe を起動する為だけのものです。 def.exe はコマンドラインから def.exe [ ] でパラメータを渡して実行できます。 同じ事をバッチファイルで行いたいと言うことなのですが。。。 パラメータは URL 1個で、その URL 1個を収容しているファイルを随時更新して、都度 abc.bat 起動のカタチから def.exe [URL] を実行したいと思っております。 宜しくお願いします。
- anmochi
- ベストアンサー率65% (1332/2045)
まず、この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個目までの引数を表示して、その後で一個ずつ引数を前に持ってきて表示するものだ。これが分かれば、バッチで引数を取る方法はバッチりだ。
お礼
有り難うございます。 基本的な使い方のヒントを沢山得られそうです。 渡す(指定する)パラメータは1個なのですが、それがその都度変わるためファイルから指定したいと思いました。 そのファイル更新⇒バッチ起動。。。という目論見です。(^_^;
補足
abc.bat は、def.exe を起動する為だけのものです。 def.exe はコマンドラインから def.exe [ ] でパラメータを渡して実行できます。 同じ事をバッチファイルで行いたいと言うことなのですが。。。 パラメータは URL 1個で、その URL 1個を収容しているファイルを随時更新して、都度 abc.bat 起動のカタチから def.exe [URL] を実行したいと思っております。 宜しくお願いします。
- ZENO888
- ベストアンサー率49% (8944/18242)
abc.bat に記載されているコマンドに引数を指定すれば可能です。 例: abc.bat COPY %1 %2 CALL abc.bat C:\TEMP\BBB.TXT D:\TEMP http://forum.nifty.com/fpcu/dosvcmd/batch.htm
お礼
有り難うございます。 http://forum.nifty.com/fpcu/dosvcmd/batch.htm もとても参考になりそうです。
お礼
出来ました。。。有り難うございました。