- ベストアンサー
batファイルの空白を判別
いつもお世話になっております。 今回、以下のような条件のbatファイルを流して、あるデータのバックアップのエクスポートと削除を行おうとしています。 1)今の日付、時間をファイル名として作成する (YYYYMMDDHHNNSS.dmpというような) 2)今日より2日前以降のファイルは削除する 2の方は出来たのですが、1がうまく出来ません。 日付はDATEで、時間はTIMEを使っています。 Set YYYY=%Date:~0,4% Set MM=%Date:~5,2% Set DD=%Date:~8,2% Set HH=%Time:~0,2% Set NN=%Time:~3,2% Set SS=%Time:~6,2% Set TODAY=%YYYY%%MM%%DD%%HH%%NN%%SS% しかしこの方法ですと、AM10時以前は" 9"というような、ゼロではなく空白が頭に入ってしまいます。 10時以降であれば、"12"や"23"と2桁ですが… 空白ではIFで判別するのが出来ないのではないかと思案中です。 うまく判別できるのであれば、 Set HH=0%Time:~1,2% として、頭に0入れを行いたいです。 どのようにして空白を判別するか、もしくは他に良い方法がありましたらよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
set /A で、一旦数値にして10時以前か判別する。
その他の回答 (1)
- catby
- ベストアンサー率65% (50/76)
空白を判断するのではなく、10以上かを判断してみてはいかがでしょうか? 10未満だったら、頭に0を足すとった形です。 以下を実行したらうまくいきましたが、これでどうでしょうか? Set YYYY=%Date:~0,4% Set MM=%Date:~5,2% Set DD=%Date:~8,2% Set HH=%Time:~0,2% Set NN=%Time:~3,2% Set SS=%Time:~6,2% IF %HH% GEQ 10 GOTO SET_TODAY Set HH=0%Time:~1,1% :SET_TODAY Set TODAY=%YYYY%%MM%%DD%%HH%%NN%%SS% 環境変数の取得にこんな方法があったなんて知りませんでした。 以後参考にさせてもらいます!
お礼
おお!見方の違いでした。 私は「より小さい」を条件に LSS 10 と比べていましたが、 「以上」の GEQ 10 としてもいいんですね。 でも2日以降の日付取得でGotoをかなり頻繁に使ってしまいましたので、さらに混乱を招いてしまいそうです(笑) こんなもので良かったら、参考にして下さいね。 ありがとうございました。
お礼
そうですね! ほとんど忘れていました。 Set /A HH=%Time:~0,2% If %HH% LSS 10 Set HH=0%HH% で出来ました。 ありがとうございます。