如何在批处理脚本中比较Windows版本?

发布于 2024-10-14 07:12:10 字数 460 浏览 2 评论 0原文

我习惯在 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

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

I'm used to script programming in Linux, but now I need to do a very simple script for windows that does something depending on the version of the operative system.

I have seen that the ver command returns the version, but I don't know how to compare the output of this command with a string.

In pseudo-code I only need that:

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

or well, by now it'd also be ok enough to do:

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

My main concern is how to compare the output of a command.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不美如何 2024-10-21 07:12:10
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 (
  ...
)
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 (
  ...
)
以往的大感动 2024-10-21 07:12:10
::dirty
for /f "tokens=9 delims=Version " %v in ('ver') do set version=%v
for /f "tokens=1 delims=]" %v in ('echo %version%') do set version=%v
if %version% geq 5.1.2600 ( echo yes )

如果您将以上内容放入批处理文件中,请在 %v 之前添加一个额外的 %。我基于维基百科文章

::dirty
for /f "tokens=9 delims=Version " %v in ('ver') do set version=%v
for /f "tokens=1 delims=]" %v in ('echo %version%') do set version=%v
if %version% geq 5.1.2600 ( echo yes )

If you are putting above in a batch file, please add an additional % before %v. I based this on Wikipedia article.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文