dポイントプレゼントキャンペーン実施中!

過去31日間、today.dat を保存するバッチコマンドを、WinXPで組みましたが、doループ内で、環境変数:nextday (rename old%%i.dat old%nextday%.dat) が、正しく帰ってきません。 アドバイスお願いします。
:-------------------------------------------
@echo off
setlocal
set maxday=30
set delday=31
cls
echo 開始します。 Enter キーを 押してください。
pause > nul
echo delete old%delday%.dat
for /l %%i in (%maxday%,-1,1) do (
set /a nextday=%%i+1
echo.
set nextday
echo rename old%%i.dat old%nextday%.dat )
echo.
echo copy today.dat old1.dat
echo.
echo 終了しました。 Enter キーを 押してください。
pause > nul
endlocal
:-------------------------------------------

A 回答 (1件)

遅延展開する必要があるのかなぁ? 使ったことないけど.

    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。 遅延展開(setlocal enabledelayedexpansion) させたら、期待通り動作しました。

:-------------------------------------------
@echo off
setlocal enabledelayedexpansion
set maxday=30
set delday=31
cls
echo 開始します。 Enter キーを 押してください。
pause > nul
echo delete old%delday%.dat
for /l %%i in (%maxday%,-1,1) do (
set /a nextday=%%i+1
set nextday
echo rename old%%i.dat old!nextday!.dat
echo rename old%%i.dat old%nextday%.dat )
echo.
echo copy today.dat old1.dat
echo.
echo 終了しました。 Enter キーを 押してください。
pause > nul
endlocal
:-------------------------------------------

お礼日時:2009/11/04 17:20

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