windows - 如何比较批处理脚本中的 Windows 版本?

标签 windows command-line batch-file cmd

我习惯于在 Linux 中编写脚本程序,但现在我需要为 Windows 编写一个非常简单的脚本,它根据操作系统的版本执行某些操作。

我看到 ver 命令返回版本,但我不知道如何将此命令的输出与字符串进行比较。

在伪代码中我只需要:

version = system('ver')
if version > WINDOWS_XP_VERSION then
    do_something();
end if

或者好吧,到现在为止也可以这样做了:

version = system('ver')
if version in [WINDOWS_VISTA_VERSION, WINDOWS_7_VERSION] then
    do_something();
end if

我主要关心的是如何比较命令的输出。

最佳答案

set Version=
for /f "skip=1" %%v in ('wmic os get version') do if not defined Version set Version=%%v
for /f "delims=. tokens=1-3" %%a in ("%Version%") do (
  set Version.Major=%%a
  set Version.Minor=%%b
  set Version.Build=%%c
)

set GTR_XP=
if %Version.Major%==5 if %Version.Minor% GTR 1 set GTR_XP=1
if %Version.Major% GTR 5 set GTR_XP=1

if defined GTR_XP (
  ...
)

关于windows - 如何比较批处理脚本中的 Windows 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4808847/

相关文章:

Windows批处理编程: Indirect/nested variable evaluation

windows - 将特定列从一个文本文件复制到另一个文本文件

windows - 在 Windows 7 中查找子文件夹中的文件总数

windows - 如何使用 MATLAB 中的 Cygwin 执行其他目录中的命令?

c++ - 为什么这个 COM 代码会泄漏?

c - 是否可以将winsock2动态链接到我的c/c++程序中

mysql - 批处理文件 CD,然后运行 ​​MySQL 查询

linux - 使用 csv 文件的部分文件名创建 2 个新列

command-line - 创建批处理文件以复制和重命名文件

windows - 我可以在应用程序中托管 MMC 管理单元吗