• ベストアンサー

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

  • バッチ(win系)内でのファイル名の取得方法

    こんにちは。 バッチ内で日々動的に変わるファイル名の取得で困っています。 動的に変わるファイル名というのは日付付のファイル名です。 例) 041208_sample.txt 例えば、とあるフォルダ(a)には 041206_sample.txt 041207_sample.txt 041208_sample.txt と複数ファイルがあり、あるシステムから送付されるファイル(date.txt)の内容が"20041208"だった場合に041208_sample.txt(注 20041208_sample.txtでない)を 別なフォルダ(b)に複写するという事を行いたいのです。 仮にファイル名の日付の桁数が「041208」でなく20041206_sample.txtだった場合のバッチコーディング例は for /F %%i in ( date.txt ) do set TXTDATE=%%i copy a\%TXTDATE%_sample.txt b とできるのですが、、、、どのようなテクニックが必要でしょうか? ちなみに動作環境はwindowsNTを使用しております。 よろしくお願いします。

  • バッチ処理でファイル名に日付を指定したい

    こんにちは。 使用OS:WindowsNT4.0 Server バッチファイルで、 c:\>dir >yymmdd.dat というコマンドを実行させたいのですが、ファイル名としてyymmddのところを実行した日付にしたいのです。 で、yymmddの値が正しくなるようにバッチ処理中に日付を取得して、その値を変数に代入しなければならないと考えるのですが、変数に日付を代入するコマンドがわかりません。 そもそも無理なことなのかもしれませんが、バッチ処理でシンプルに行えたらなと考えております。 方法はありますでしょうか? その後に予想される問題なのですが、仮に変数に日付が代入されたとしても、その変数の内容をファイル名の一部として指定できるかどうかも分かりません。 重ねて質問ですがこれが無理な場合、何か代替案はないでしょうか? 何がしたいかと言うと、ドライブの空き容量を定期的に自動で吐き出させたいのです。 ソフト(フリーも含めて)に頼る方法が有るのでしょうが、基本的にソフトの導入は敬遠したいと考えております。 宜しくお願い致します。

  • DOSのバッチで、変数中のファイル名を取り出すには

    DOSのバッチの初心者です。 $FILEという変数に、 C:\Documents and Settings\Administrator\My Documents\okwave.txt のようにファイル名がフルパスで入ってくるとします。このファイル名だけ(okwave.txt)を別の変数に入れたいのですが、うまくいきません。 set f=%$FILE% set g=%%~nf echo %g% 上のように書いてみたのですが、変数gは%~nfという値が入ってしまいます。どう直せばよいでしょうか。

  • DOSバッチ処理でファイル名の取得

    選択した複数のファイルの名称を取得する目的で、以下の内容のバッチファイルを作成し、(右クリック>送る) で使えるようにしています。 選択するファイル名が少なければ問題なく.txtが作成されるのですが、ファイル数が100を超えると(選択したファイルによって上限が変わる).txtが作成されなくなります。 バッチファイルの内容に問題があるのでしょうか? アドバイスをお願いします。 :start if "%~1"=="" goto end dir /b %1 >> %TEMP%\List.txt shift goto start :end

  • バッチファイルでファイル名をリネームのコマンド

    お世話になります。 バッチファイルのコマンドについて質問させていただきます。 【やりたいこと】 AAA.batというバッチファイルと”MU_日付.txt”というテキストがあります。 このテキストの日付部分は毎回変わります。例)MU_111226.txt このバッチファイルとMU_日付.txtは同じ階層にあります。 まず、このAAA.batをクリックしたら、この”MU_111226.txt” を ”読み込み.txt” という名前にリネームします。このリネーム処理の時、テキスト名が”MU”で始まるファイル以外は対象にしないようにしたいのです。 次にある処理を行って、その処理が済んだら”読み込み.txt”を”END_MU_111226.txt”といった元のファイル名に”END_”を付けた形でリネームして、同じ階層にある「処理済み」フォルダへ移動させたいのです。 ”END_” + ”元のファイル名”が無理であれば、”MU_111226.txt”を「処理済み」フォルダへ移動させるだけでも構いません。 このような処理は可能でしょうか? どなたかご教授いただけますでしょうか。よろしくお願い致します。

  • バッチファイルでファイル名をリネームのコマンドにつ

    お世話になります。 バッチファイルのコマンドについて質問させていただきます。 【やりたいこと】 AAA.batというバッチファイルと”MU_日付.txt”というテキストがあります。 このテキストの日付部分は毎回変わります。例)MU_111226.txt このバッチファイルとMU_日付.txtは同じ階層にあります。 まず、このAAA.batをクリックしたら、この”MU_111226.txt” を ”読み込み.txt” という名前にリネームします。このリネーム処理の時、テキスト名が”MU”で始まるファイル以外は対象にしないようにしたいのです。 次にある処理を行って、その処理が済んだら”読み込み.txt”を”END_MU_111226.txt”といった元のファイル名に”END_”を付けた形でリネームして、同じ階層にある「処理済み」フォルダへ移動させたいのです。 ”END_” + ”元のファイル名”が無理であれば、”MU_111226.txt”を「処理済み」フォルダへ移動させるだけでも構いません。 このような処理は可能でしょうか? どなたjかご教授いただけますでしょうか。よろしくお願い致します。

  • DOSバッチファイルへの引き渡し方法

    次のような操作をしたいのですが。 御教示下さい。 操作の流れ テキストファイルに一文字出力する CMD1 > a.txt テキストファイルa.txtには、一文字しかはいらない 1やa など そのa.txt の内容を判断して バッチファイルb.bat内で分岐処理したい   b.bat 内  if 'a.txtの内容' により分岐処理

  • バッチファイルについて

    下記のようなバッチファイルを作りたいのですが 教えていただけませんでしょうか? 作成したい内容は、 PC起動時に自PCにある『XXX.CVS』ファイルを (C:\test\XXX.CVS) 共有ファイルサーバーのフォルダ内へ ファイル名に日付を付けて 『YYMMDD_XXX.CVS』としてコピーする。 (\\test\goo\YYMMDD_XXX.CVS)

  • バッチファイルで複数のテキストファイルの置換

    バッチファイルで以下のような処理を行うことはできないでしょうか? フォルダ1以下の全てのテキストファイル内の abcde という文字列を あいうえお に置換して、上書き保存ではなく 元のファイル名+(編集済み).txt というファイル名で同じ場所に保存できないでしょうか。 バッチファイルで出来ない場合他の物でも構いません。 ――――――――――――――――――――――――――――― 処理前 フォルダ1   │   ├フォルダ2   │  └ファイル1.txt (内容:123abcde)   │   ├フォルダ3   │  └フォルダ4   │     └ファイル2.txt (内容:abcde123abcde123)   │   └フォルダ5      └ファイル3.txt (内容:456fghij) ――――――――――――――――――――――――――――― ↓ ――――――――――――――――――――――――――――― 処理後 フォルダ1   │   ├フォルダ2   │  └ファイル1.txt (内容:123abcde)   │  └ファイル1(編集済).txt (内容:123あいうえお)   │   ├フォルダ3   │  └フォルダ4   │     ├ファイル2.txt (内容:abcde123abcde123)   │     └ファイル2(編集済).txt (内容:あいうえお123あいうえお123)   │   └フォルダ5      └ファイル3.txt (内容:456fghij) ――――――――――――――――――――――――――――― こんな感じで出来ないでしょうか。 よろしくお願いします。

  • 【バッチファイル】ホスト名をファイル名につけたい【変更】

    バッチファイルで作成したファイルのファイル名(○○.txt)を 「ホスト名.txt」に変更したいのですが やり方がよくわかりません。 どなたかご存知の方、お教え願います。 宜しくお願いします。