我有这个代码:
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 位”。我认为变量初始化被延迟了。有人知道解决方法吗?
我有这个代码:
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
,因为您根本没有处理任何传递的参数。