質問: バッチでファイルをリネームして別フォルダ移動に行き詰まり・・・ バッチ(コマンドプロンプト)でファイルをリネームして別フォルダに移したいのですが行き詰ってしまったのでどなたかご教示ください。当方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 しないでどういう計算経過になっているかみれば すぐわかったんじゃないですかね。