我有这个密码:
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位”。我认为变量初始化被延迟了。有人知道解决办法吗? 最佳答案
如果运行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
,这仍然无法正常工作,因为您根本没有处理任何正在传递的参数。关于windows - 批处理文件中的变量初始化被延迟,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13794581/