我有这个代码:
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输出成为“This is 32bit”。 我认为variables初始化正在被延迟。 有人知道一个解决方法吗?
如果运行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
,这仍然不能正常工作,因为你没有处理任何参数。