例えばtxtファイルをドロップするとある動作をするバッチファイルAがあります。
特定のアドレスにあるtxtをドロップせずにAの操作を実行出来るバッチファイルBを、
Aのバッチを呼び出す形で作りたいです。

パッチファイルBを下のような感じで書いてみました。
----------------------------------------
set BAT=Aのbatファイルのパス
set TXT=C:\*.txt

call %BAT% %TXT%
----------------------------------------
これでC直下にある全てtxtはAのバッチファイルである動作をするだろうと思ったのですが、
Aバッチファイルには『C:\*.txt』とそのまま読み込まれてしまいました。
*がワイルドカードとして使われていない感じです。

なぜでしょう?どうしたらいいでしょうか。

A 回答 (1件)

>なぜでしょう?どうしたらいいでしょうか。



変数%TXT%に格納されているのは「C:\*.txtのファイルリスト」ではなく、単なる「C:\*.txt」と言う文字列だからです。

ご質問の要望であれば、こうします。

REM ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ a.bat ここから
@echo off
REM 引数1のファイルパスに対して何か処理をする
echo A.BATの処理:%~1
type %~1
REM ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ a.bat ここまで

REM ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ b.bat ここから
@echo off
set BAT=C:\qa6671925\a.bat
set TXT=C:\qa6671925\*.txt
REM 変数TXTのファイルリスト分繰り返す
for /f "usebackq tokens=*" %%i IN (`dir /s /b "%TXT%"`) DO @%BAT% %%i
REM ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ b.bat ここまで


これはご質問のとおり、2つのバッチを使う例です。
(a.batに手を入れたくない場合とかですね)

解法は他にもいくつか考えられます。
(バッチ1つでやる、とかね)
    • good
    • 0
この回答へのお礼

おおできました!
forの行が重要ですね。ちょっとまだ理解できていないのですが・・・
ありがとうございました。

お礼日時:2011/04/16 22:37

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


人気Q&Aランキング

おすすめ情報