バッチファイルでProject Euler(3)

setlocalコマンド

setlocalはendlocalまたはexitが呼ばれるまで有効です。

@echo off

set /a n = 1
setlocal
set /a n = 2
setlocal
set /a n = 3
echo %n%
endlocal
echo %n%
endlocal
echo %n%
3
2
1

気をつけなければいけないのは、setlocalは関数を呼んだ先でも有効ということです。

@echo off

set /a n = 2
setlocal
call :f
echo %n%
endlocal
echo %n%
exit /b 0

:f
    rem // ここでセットしてもsetlocalが有効
    set /a n = 1
    exit /b 0
1
2