Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement 如何使用带有竖条的批处理文件if语句?_If Statement_Batch File_Command - Fatal编程技术网

If statement 如何使用带有竖条的批处理文件if语句?

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

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

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
语句不能包含表达式,无论命令数量如何,只能是特定文本。感谢您的快速响应。我将尝试注册表查询,因为它似乎更易于使用。