プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。

フォルダにあるファイルが存在するときに処理を行うバッチファイルを作成しています。
あるファイル名は一部は固定文字で一部は変動します。
具体的には
sampleYYMMDD.txt
となり、YYMMDDは変動し、その内容は他のファイルdate.txtに入っています。

例えば、date.txtには
041021
がはいっていて

バッチファイルでsample041021.txtがあれば次の処理を行うといったロジックを記述したいのですが、どうしたらできますでしょうか?

ファイル名が固定であれば単純に
FOR %%F DO IF %%F==sample041021.txt 処理
とできそうなのですが、ファイル名の情報はdate.txtの内容に依存します。

もっと簡単なやり方でもかまいません。ヒントをいただけないでしょうか?

A 回答 (4件)

確かにSET /Pが使えない古いOSでは使えないですね。


今確認した環境はWindows XPですが、仕事柄いまだにバッチ処理を書いているので、SET /PがNTでも2000でも動いたことを記憶していますが、確認してください。

SET /P DATESTR=< date.txt

/Pパラメータはプロンプトから環境変数に値を設定することができるパラメータですので、標準入力でも環境変数に設定できると思われます。

FOR /F %%I IN (date.txt) DO SET TEXTDATE=%%I

でも、当然環境変数に設定することができますね。
ここで、1つ情報を
仮に、date.txtが
041020
041021
041022
のように何行も入っていた場合、
前者のSET /Pから始まるものは一番最初の行の041020を、
後者のFORから始まるものはは一番最後の行の041022を、
それぞれ評価すると思います。
    • good
    • 0
この回答へのお礼

ありがとうございました。
こちらの環境はWindowsNT Workstation v4.0です。
SETコマンドではどうも内容が変数に設定されないようです。参考になりました。他でも試してみます。

お礼日時:2004/10/13 09:55

標準入力じゃ受け取れないかと・・・



for /F %%i in (ファイル名) do set TXTDATE=%%i

これでファイルにかかれた内容を環境変数にセットできます。
ただし、NT系のOSに限ります。
    • good
    • 0
この回答へのお礼

ありがとうございました。

標準入力ではなぜだめなのかわかりませんが、
解決できました。

お礼日時:2004/10/13 09:57

No.1です。


ちょっと訂正します。

SET /P DATESTR= < data.txt
IF EXIST sample%DATESTR% 処理

で確認して見てください。
    • good
    • 0

SET /P DATESTR < data.txt


IF EXIST sample%DATESTR% 処理

で出来そうですが確認してみてください。
    • good
    • 0

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