If statement 如何使用带有竖条的批处理文件if语句?
我试图使用批处理文件找出操作系统是32位还是64位,然后根据输出运行程序。这是我到目前为止所拥有的If statement 如何使用带有竖条的批处理文件if语句?,if-statement,batch-file,command,If Statement,Batch File,Command,我试图使用批处理文件找出操作系统是32位还是64位,然后根据输出运行程序。这是我到目前为止所拥有的 if (systeminfo | findstr = based) == "x64-based PC" run 64-bit Program else run 32-bit program 我一直觉得“这个时候出人意料”。我尝试过使用无括号的hat^,但似乎无法通过该错误。是否有我遗漏的东西或其他方法可以做到这一点。批处理文件和程序将位于闪存驱动器上,并在多台windows pc上使用。sys
if (systeminfo | findstr = based) == "x64-based PC" run 64-bit Program
else run 32-bit program
我一直觉得“这个时候出人意料”。我尝试过使用无括号的hat^,但似乎无法通过该错误。是否有我遗漏的东西或其他方法可以做到这一点。批处理文件和程序将位于闪存驱动器上,并在多台windows pc上使用。systeminfo命令是我知道的获得所需位结果的唯一方法,我知道该命令有效,但我需要程序查看结果并做出决定。任何想法都将不胜感激!提前感谢不幸的是,您不能在
if
语句中包含(可能的)多行输出systeminfo | findstr=based
您必须像这样捕获输出:
for /f "tokens=3" %%A in ('systeminfo ^| findstr based') do (
if /i "%%~A"=="x64-based" (
:: Run 64-bit Program
) else (
:: Run 32-bit Program
)
)
但是,我建议只使用处理器架构
reg query "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE
这是@Aacini的一个例程
if exist "%SYSTEMDRIVE%\Program Files (x86)" (
echo Type=64 bit
) else (
echo Type=32 bit
)
+1、还应注意的是,
if
语句不能包含表达式,无论命令数量如何,只能是特定文本。感谢您的快速响应。我将尝试注册表查询,因为它似乎更易于使用。