バッチ(コマンドプロンプト)でファイルをリネームして別フォルダに移したいのですが行き詰ってしまったのでどなたかご教示ください。当方XPの環境です。
まず、今日(例:2月4日時点で)簡単に説明するとあるフォルダに3つファイルが存在します。
「test1」フォルダに「AAA200711.txt」「AAA200712.txt」「AAA200801.txt」があるとします。
数字はその月に作ったファイルと思ってください。
そのファイルを「test2」フォルダへ移したいと思っています。
移す際にファイル名をリネームしたいと思います。
2008年1月のものを「AAA1.txt」2007年12月のファイルを「AAA2.txt」といった感じでやるつもりです。
当方で考えた下記の構文でですが先月、先々月のものはうまくリネームしてコピーされました。
ですが3ヶ月前のファイルだけなぜか出来ません。
下記にあるのはそのまんまコピーしたものになります。
原因がわからず戸惑っておりますのでよろしくお願いします。
@echo off
set YYYYMM=%DATE:~-10,4%%DATE:~-5,2%
set /a LASTMONTH=YYYYMM-1
if %LASTMONTH:~-2%==00 set /a LASTMONTH+=12-100
copy C:\test1\AAA%LASTMONTH%.txt C:\test2\AAA1.txt
@echo off
set YYYYMM=%DATE:~-10,4%%DATE:~-5,2%
set /a TWOMONTHAGO=YYYYMM-2
if %TWOMONTHAGO:~-2%==00 set /a TWOMONTHAGO+=12-100
copy C:\test1\AAA%TWOMONTHAGO%.txt C:\test2\AAA2.txt
@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
↑これがうまくいかないのです。
日付の計算とかが間違っているのでしょうか?
cd /d C:\test2
del AAA*.txt
> set YYYYMM=%DATE:~-10,4%%DATE:~-5,2%
> set /a THREEMONTHAGO=YYYYMM-3
今月に当てはめると、200802 - 3 ですから
> if %THREEMONTHAGO:~-2%==00 set /a THREEMONTHAGO+=12-100
最下位二桁が '00' になることはないでしょう。
つか、echo off しないでどういう計算経過になっているかみれば
すぐわかったんじゃないですかね。