1

我有这个代码:

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 位”。我认为变量初始化被延迟了。有人知道解决方法吗?

4

1 回答 1

3

如果您运行sample.bat 6464则在%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,因为您根本没有处理任何传递的参数。

于 2012-12-10T03:35:10.733 回答