|
964) ファイル名を環境変数にSET ちるちるみちる 2002/12/03(火) 14:53 |
|
早速質問させて頂きます。 バッチで、とあるディレクトリにある複数のファイル (ファイル名:Save_○○.lzh ○○は年月日) のファイル名を検索し、ファイル名の年月日が一番古いものを削除したいのですが、 どうすれば可能になるのでしょうか? 検索したファイル名を環境変数にセットできれば 可能だと思ったのですが、 そのコマンドが分かりません。 OSはWinNT4.0を使用しています。 よろしくお願いします。 |
|
967) Re:ファイル名を環境変数にSET じゃく 2002/12/04(水) 08:17 |
|
こんにちは。 >バッチで、とあるディレクトリにある複数のファイル >(ファイル名:Save_○○.lzh ○○は年月日) >のファイル名を検索し、ファイル名の年月日が一番古いものを削除したいのですが、 >どうすれば可能になるのでしょうか? ファイル名に含まれる年月日について質問です。 (1)一番古い年月日が複数合った場合はどうしたいですか? それとも必ず1つでしょうか (2)ファイル名の年月日と、dir で表示される年月日は一致 していますか? >検索したファイル名を環境変数にセットできれば >可能だと思ったのですが、 >そのコマンドが分かりません。 上記質問のとおり、ファイル名で一番古いファイルが、dir コマンドの結果でも一番古ければ、 dir /b /o:-d Save_*.lzh というコマンドの最後の行が一番古いファイルなので、 echo off for /F %%F in ('dir /b /o:-d Save_*.lzh') do set fname=%%F echo 一番古いファイルは %fname% という形で取り出せます。 |
|
968) Re2:ファイル名を環境変数にSET ちるちるみちる 2002/12/04(水) 09:52 |
|
じゃくさん ご回答ありがとうございます。 >>バッチで、とあるディレクトリにある複数のファイル >>(ファイル名:Save_○○.lzh ○○は年月日) >>のファイル名を検索し、ファイル名の年月日が一番古いものを削除したいのですが、 >>どうすれば可能になるのでしょうか? > > ファイル名に含まれる年月日について質問です。 > (1)一番古い年月日が複数合った場合はどうしたいですか? > それとも必ず1つでしょうか 同一年月日は存在せず、必ず一つだけです。 > (2)ファイル名の年月日と、dir で表示される年月日は一致 > していますか? この質問はファイル名の年月日と、ファイルの更新日時が一致しているか? という質問と受け取って良いのでしょうか? そうであれば、現時点では同一です。(これからも同じだと思います。) >>検索したファイル名を環境変数にセットできれば >>可能だと思ったのですが、 >>そのコマンドが分かりません。 ここの質問の仕方がおかしかったですね。 検索したファイル名を環境変数にセットではなく、 ファイル名を環境変数にセットするコマンドが分かれば IFなり何なりで一番古い年月日を取得できるかと思いました。 足りない(逆?)文章ですいませんでした。 > 上記質問のとおり、ファイル名で一番古いファイルが、dir > コマンドの結果でも一番古ければ、 > dir /b /o:-d Save_*.lzh > というコマンドの最後の行が一番古いファイルなので、 > >echo off >for /F %%F in ('dir /b /o:-d Save_*.lzh') do set fname=%%F >echo 一番古いファイルは %fname% >という形で取り出せます。 上記コマンドで実現できました。 しかも自分としては、 1.ファイル名を環境変数にセット 2.IF等で一番古いファイル名を判定 3.2の結果、そのファイルを削除 という工程を考えていたのですが、 1.と2.がまとめて出来てしまったので ソースも単純になり、とても助かりました。 ありがとうございました。 |