質問: コマンドプロンプトで2ヶ月前3ヶ月前の計算 2ヶ月前 3ヶ月前の計算をしたいと思っております。 途中までわかるのですが例えば前年度という条件になったとき失敗してしまいます。 2ヶ月前: @echo off set yyyymm=%date:~-10,4%%date:~-5,2% set /a twomonthago=yyyymm-2 if %twomanthago:~-2%==00 set /a twomonthago+=12-100 copy c:\test1\aaa%twomonthago%.txt c:\test2\aaa3.txt if文が間違っているのはわかりますがどう計算したらよいか思いつきません・・・よろしくお願いします。 3ヶ月前: @echo off set yyyymm=%date:~-10,4%%date:~-5,2% set /a threemonthago=yyyymm-3 if %threemonthago:~-2%==00 set /a threemonthago+=12-100 copy c:\test1\aaa%threemonthago%.txt c:\test2\aaa3.txt
回答: たとえば、 set yyyymm=%date:~-10,4%%date:~-5,2% には現在なら200802と入りますね。 set /a twomonthago=yyyymm-2 とすると、200800 が入りますね。 if %twomanthago:~-2%==00 set /a twomonthago+=12-100 で、00と一致するので 200800 - 100 + 12 で 200712 になりますね。 (これはokですね) set /a threemonthago=yyyymm-3 には、200799 と入りますね。 if %threemonthago:~-2%==00 set /a threemonthago+=12-100 では00を比較しているので合致しませんね。 じゃあ末尾2桁が何だったら +12-100 を計算する条件になるのでしょう? それは、末尾2桁=00または12<末尾2桁<=99の時です。 条件が二つありますから2行で記載します。 if %threemonthago:~-2%==00 set /a threemonthago+=12-100 if %threemonthago:~-2% gtr 12 set /a threemonthago+=12-100 gtr という比較演算子についてはif /?コマンドで確認して下さい。