我有这段代码:
if "%2"=="32" (
set bit=This is 32bit
)
if "%2"=="64" (
set bit=This is 64bit
)
echo %bit%
)
当我尝试使用sample.bat /s 64
时,输出为“这是64位”,但当我尝试使用sample.bat /s 32
时,输出仍是“这是64位”。然后我将它切换回sample.bat 64,输出变为“这是32位”。我认为变量初始化正在被延迟。有人知道解决方法吗?
答案 0 :(得分:3)
如果您运行sample.bat 64
,则64
位于%1
,而不是%2
。传递给批处理文件的第一个参数始终为%1
- 批处理文件本身的名称位于%0
中。你得到一些随机输出残余或另一次尝试留下的东西。试试这个:
setlocal
if "%1"=="32" (
set bit=This is 32bit
)
if "%1"=="64" (
set bit=This is 64bit
)
echo %bit%
)
endlocal
setlocal
确保在批处理文件结束时丢弃任何环境更改,因此您不必担心会从测试中获取剩余物。
如果你只输入sample.bat
,这仍然无法正常工作,因为你没有处理任何参数。