• ベストアンサー

DOSバッチファイルで日々ファイル名が変動するファイルの存在チェック

こんにちは。 フォルダにあるファイルが存在するときに処理を行うバッチファイルを作成しています。 あるファイル名は一部は固定文字で一部は変動します。 具体的には sampleYYMMDD.txt となり、YYMMDDは変動し、その内容は他のファイルdate.txtに入っています。 例えば、date.txtには 041021 がはいっていて バッチファイルでsample041021.txtがあれば次の処理を行うといったロジックを記述したいのですが、どうしたらできますでしょうか? ファイル名が固定であれば単純に FOR %%F DO IF %%F==sample041021.txt 処理 とできそうなのですが、ファイル名の情報はdate.txtの内容に依存します。 もっと簡単なやり方でもかまいません。ヒントをいただけないでしょうか?

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

標準入力じゃ受け取れないかと・・・ for /F %%i in (ファイル名) do set TXTDATE=%%i これでファイルにかかれた内容を環境変数にセットできます。 ただし、NT系のOSに限ります。

hanikos2001
質問者

お礼

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

その他の回答 (3)

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.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を、 それぞれ評価すると思います。

hanikos2001
質問者

お礼

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

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.2

No.1です。 ちょっと訂正します。 SET /P DATESTR= < data.txt IF EXIST sample%DATESTR% 処理 で確認して見てください。

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.1

SET /P DATESTR < data.txt IF EXIST sample%DATESTR% 処理 で出来そうですが確認してみてください。

関連するQ&A

専門家に質問してみよう