对于某些特殊符,需要转义,即不要当成特殊符来预处理,这里<是特殊符^是转义符,也就是它被预处理成 set /a num=1<
(计算时会把数转成二进制计算之后再以十进制数表达,这种左移的实质类似于十进制在原数后添0 计算乘10的n次方)
建议不要采用这种转义方法而采取加引号的方法转义较为简捷
set /a "num=1<
@echo off
set /p n=请输入2的几次方:
for /l %%i in (1,1,%n%) do call :test
echo 2的%n%次方:%s%
pause
:test
set /a s=%s%*2