- ベストアンサー
DOSバッチファイルで日々ファイル名が変動するファイルの存在チェック
こんにちは。 フォルダにあるファイルが存在するときに処理を行うバッチファイルを作成しています。 あるファイル名は一部は固定文字で一部は変動します。 具体的には sampleYYMMDD.txt となり、YYMMDDは変動し、その内容は他のファイルdate.txtに入っています。 例えば、date.txtには 041021 がはいっていて バッチファイルでsample041021.txtがあれば次の処理を行うといったロジックを記述したいのですが、どうしたらできますでしょうか? ファイル名が固定であれば単純に FOR %%F DO IF %%F==sample041021.txt 処理 とできそうなのですが、ファイル名の情報はdate.txtの内容に依存します。 もっと簡単なやり方でもかまいません。ヒントをいただけないでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
標準入力じゃ受け取れないかと・・・ for /F %%i in (ファイル名) do set TXTDATE=%%i これでファイルにかかれた内容を環境変数にセットできます。 ただし、NT系のOSに限ります。
その他の回答 (3)
- arukamun
- ベストアンサー率35% (842/2394)
確かに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を、 それぞれ評価すると思います。
お礼
ありがとうございました。 こちらの環境はWindowsNT Workstation v4.0です。 SETコマンドではどうも内容が変数に設定されないようです。参考になりました。他でも試してみます。
- arukamun
- ベストアンサー率35% (842/2394)
No.1です。 ちょっと訂正します。 SET /P DATESTR= < data.txt IF EXIST sample%DATESTR% 処理 で確認して見てください。
- arukamun
- ベストアンサー率35% (842/2394)
SET /P DATESTR < data.txt IF EXIST sample%DATESTR% 処理 で出来そうですが確認してみてください。
お礼
ありがとうございました。 標準入力ではなぜだめなのかわかりませんが、 解決できました。