【问题标题】:How can I use a batch file if statement with a vertical bar?如何使用带有竖线的批处理文件 if 语句?
【发布时间】:2013-06-27 21:28:56
【问题描述】:

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

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

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

【问题讨论】:

    标签: if-statement batch-file command


    【解决方案1】:

    很遗憾,您不能在 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
        )
    )
    

    不过,我建议只使用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

    【讨论】:

    • +1,还需要注意的是if语句不能包含表达式,不管命令的数量,只能是特定的文本。
    • 感谢您的快速回复。我将尝试注册表查询,因为它看起来更容易使用。
    【解决方案2】:

    这是来自@Aacini 的例程

    if exist "%SYSTEMDRIVE%\Program Files (x86)" (
       echo Type=64 bit
    ) else (
       echo Type=32 bit
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-08
      • 2017-08-01
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      • 2023-03-20
      • 1970-01-01
      相关资源
      最近更新 更多