如何使用带垂直条的语句批处理文件?

use*_*815 1 command if-statement batch-file

我试图找出一个OS是32位还是64位使用批处理文件,然后根据输出运行程序.这是我到目前为止所拥有的

if (systeminfo | findstr = based) == "x64-based PC" run 64-bit Program
else run 32-bit program 
Run Code Online (Sandbox Code Playgroud)

我不断得到"|此时出乎意料".我试过使用帽子^而没有括号但我似乎无法通过该错误.是否有我缺少的东西或其他方式来做到这一点.批处理文件和程序将在闪存驱动器上,并在多个Windows PC上使用.systeminfo命令是我所知道的唯一获取我需要的结果的方法,我知道该命令有效,但我需要该程序来查看结果并做出决定.任何想法将不胜感激!提前致谢

Dav*_*ann 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
    )
)
Run Code Online (Sandbox Code Playgroud)

但是,我建议只使用PROCESSOR_ARCHITECTURE.

reg query "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE
Run Code Online (Sandbox Code Playgroud)

/sf/answers/121733881/

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

  • +1,还应该注意,无论命令的数量如何,`if`语句都不能包含表达式,并且只能是特定的文本. (3认同)