- ベストアンサー
バッチファイルの日付計算が出来ません
毎月1回実行するバッチファイルがあります。 このバッチファイルは、あるプログラムのログを退避するバッチファイルなので 月に2度以上実行させないようなチェックを入れたいと考えています。 たとえば、 最初に実行する時は、バッチファイルの中で日付を持たせたファイルを出力しておき 2度目の実行時は、日付のファイルを読み込んで1ヶ月以上たっていなければエラーとする ・・・といった事をやりたいのですが、やり方がわかりません。 日付ファイルの出力は、 echo %DATE:/=% >D:\datecheck.log とすれば良いことはわかるのですが、 日付を比較する方法はどうすれば良いでしょうか。 単純にset /Aで引き算をしてしまうと 20100207-20100131=76となってしまいます。。 どうか皆さん、よろしくお願いします(;o;)
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
日数を計算しても、1か月の日数は月によって異なるんですが、それはどう対処するおつもりですか? 毎月1回実行でよいのなら、例えば2010年1月10日に実行したなら、2010年1月中はもう実行しないで、2010年2月になったらまた実行する、という考えで、年と月だけ比較すればいいんじゃないでしょうか。 ・2010年1月10日に実行した際に、201001をログに記録 ・2010年1月15日に実行された場合、年と月が201001で同じなので処理しない ・2010年2月1日に実行された場合、年と月が201002で201001とは異なるので処理を行い、ログを記録する
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10358)
set YYYY=%DATE:~0,4% set MM=%DATE:~5,2% set DD=%DATE:~8,2% のように、年月日に分割して処理します。 実際には、set /a の計算では先頭ゼロの数字は8進数と見なされるという困った仕様があるので、先頭がゼロにならないようにする必要があります。
お礼
返信遅くなりましたが、ありがとうございます。 アドバイス頂いた内容で作成したいと思います。 本当に助かりました^^