2

我正在尝试使用批处理文件确定操作系统是 32 位还是 64 位,然后根据输出运行程序。这是我到目前为止所拥有的

if (systeminfo | findstr = based) == "x64-based PC" run 64-bit Program
else run 32-bit program 

我不断收到“|此时出乎意料”。我尝试使用帽子 ^ 并且没有括号,但我似乎无法通过该错误。有什么我遗漏的东西或其他方法吗?批处理文件和程序将在闪存驱动器上,并在多个 Windows pc 上使用。systeminfo 命令是我知道的获得所需位结果的唯一方法,并且我知道该命令有效,但我需要程序查看结果并做出决定。任何想法将不胜感激!提前致谢

4

2 回答 2

6

不幸的是,您不能systeminfo | findstr = basedif语句中包含(可能的)多行输出。

您必须像这样捕获输出:

for /f "tokens=3" %%A in ('systeminfo ^| findstr based') do (
    if /i "%%~A"=="x64-based" (
        :: Run 64-bit Program
    ) else (
        :: Run 32-bit Program
    )
)

但是,我建议只使用PROCESSOR_ARCHITECTURE.

reg query "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE

https://stackoverflow.com/a/1739055/891976

http://support.microsoft.com/kb/556009

于 2013-06-27T21:40:29.783 回答
0

这是来自@Aacini 的例行程序

if exist "%SYSTEMDRIVE%\Program Files (x86)" (
   echo Type=64 bit
) else (
   echo Type=32 bit
)
于 2013-06-28T10:15:25.323 回答