我在尝试在批处理文件中使用
if
命令时遇到问题。
if %ver%==Microsoft Windows [Version 10.0.22621.2861] echo true
尽管
echo
的输出是:,但没有
ver
Microsoft Windows [Version 10.0.22621.2861]
有什么建议吗?
一个主要问题是
%ver%
和您要比较的字符串都有嵌入的空格,它们是标记分隔符,因此批处理文件解释器将无法正确解析它。相反,您应该在环境变量和要与之比较的字符串周围使用双引号,例如 if "%ver%"=="Microsoft Windows [Version 10.0.22621.2861]" echo true
。
但是,请注意,这假设两个字符串都不包含双引号,这应该适用于您的情况。否则,任何嵌入的双引号将充当标记分隔符,因此它们将破坏比较检查。有关此内容的更多详细信息以及与使用
if
相关的其他问题,请参阅 If - 有条件执行命令 - Windows CMD。
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)