【お題】引っかけ問題(締め切り10月27日(日)23時)

こんにちは。
バッチファイルコマンド(DOSコマンド?)について質問があります。

まずやりたい事としては、
「前月日付のフォルダを自動作成したい」
です。

当月日付をもってくる為には以下の様なコマンドでできました。
for /f "tokens=1-2" %%l in ('date /t') do set today=%%l
for /f "delims=/ tokens=1-2" %%a in ('echo %today%') do set yymm=%%a%%b

このコマンドを実行すると、例えば、%yymm%には200507が入っています。
このコマンドを応用して、前月日付(200506)を取得したいのですが、何か言い方法はありませんでしょうか?
また、新たなやり方あるのでしたら教えて頂けないでしょうか?

A 回答 (2件)

yymmに当月200507が入ったのだから後は簡単です。

set /a コマンドで四則演算が出来ます。月から1を引いて、下二桁が00になったら年またぎなので、年を1引くつまり100を引いて、月を12を足せばよいです。

set /a yymm-=1
if %yymm:~-2%==00 set /a yymm+=-100+12

なお、当月を求めるのはお書きの方法でも出来ますが次の方が簡単です。
set yymm=%DATE:~-10,4%%DATE:~-5,2%
    • good
    • 1
この回答へのお礼

ご回答有難う御座います。
やはり数値計算出来たんですね。。。
知りませんでした。

お礼日時:2005/07/22 14:07

残念ながら、標準のコマンドセットの中で、当日以外の日付を取得することは不可能です。



Cygwin等に入っているgnuのdateコマンド等を使用するか、wsh + vbscript等でより柔軟な日付取得ができるコマンドを作成し、バッチファイルから呼ぶかといった話になります。

せめて、WindowsのdateがUNIX系のdateコマンドのように環境変数TZを見て変わるような仕様だったらよかったんですけどね。

その辺のノウハウは、参考URLを見てみてください。

参考URL:http://www.atmarkit.co.jp/fwin2k/win2ktips/419ba …
    • good
    • 0
この回答へのお礼

ご回答有難う御座います。
URLとても参考になりました!
ホントにUNIXだったら良かったんですけどね…(^^;)

お礼日時:2005/07/22 14:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報