“If”命令似乎不适用于“%ver%”字符串

问题描述 投票:0回答:2

我在尝试在批处理文件中使用

if
命令时遇到问题。

if %ver%==Microsoft Windows [Version 10.0.22621.2861] echo true

尽管

echo
的输出是:
,但没有 
ver

Microsoft Windows [Version 10.0.22621.2861]

有什么建议吗?

windows batch-file cmd
2个回答
1
投票

一个主要问题是

%ver%
和您要比较的字符串都有嵌入的空格,它们是标记分隔符,因此批处理文件解释器将无法正确解析它。相反,您应该在环境变量和要与之比较的字符串周围使用双引号,例如
if "%ver%"=="Microsoft Windows [Version 10.0.22621.2861]" echo true

但是,请注意,这假设两个字符串都不包含双引号,这应该适用于您的情况。否则,任何嵌入的双引号将充当标记分隔符,因此它们将破坏比较检查。有关此内容的更多详细信息以及与使用

if
相关的其他问题,请参阅 If - 有条件执行命令 - Windows CMD


0
投票

ver
是一个 命令,而不是环境变量,因此您可以运行
ver
,但不能运行
%ver%

C:\>ver

Microsoft Windows [Version 10.0.22631.2715]

C:\>%ver%
'%ver%' is not recognized as an internal or external command,
operable program or batch file.

C:\>echo %ver%
%ver%

我建议通过管道输出

ver
并搜索您正在寻找的版本:

ver|find "10.0.22621.2861">NUL && (echo true) || (echo wrong version)
© www.soinside.com 2019 - 2024. All rights reserved.