通过批处理"CMD"文件识别操作系统系统、架构并执行特定任务

3
我有一个批处理文件,其中包含以下代码:
如果存在"C:\Users\All Users\ntuser.dat",则跳转到Win 7; 如果存在"C:\Documents and Settings\All Users\ntuser.dat",则跳转到Win XP;
:Win 7 在这里编写在Win7上运行的参数
C:\w7\test.txt
:Win XP 在这里编写在WinXP上运行的参数
其他操作系统和操作系统架构也是如此
它目前可以正常工作,但我需要添加更多的操作系统识别选项。我希望批处理文件能够识别操作系统版本、架构(仅限Windows 2003R2 x64、Windows Xp x32 和 x64、Windows Vista x32 和 x64、Windows 7 x32 和 x64、Windows 8 x32 和 x64)。
非常感谢您的协助!
2个回答

5

这里有一个非常好的解决方案,来自Aacini在SO上发布,但现在无法找到并从我的“库”中发布:

@echo off
setlocal EnableDelayedExpansion

::Identify OS
for /F "delims=" %%a in ('ver') do set ver=%%a
set Version=
for %%a in (95=95 98=98 ME=ME NT=NT 2000=2000 5.1.=XP 5.2.=2003 6.0.=Vista 6.1.=7 6.2.=8) do (
    if "!Version!" equ "this" (
        set Version=Windows %%a
    ) else if "!ver: %%a=!" neq "%ver%" (
        set Version=this
    )
)

::Identify bit
if exist "%SYSTEMDRIVE%\Program Files (x86)" (
    set Type=64 bit
) else (
    set Type=32 bit
)

::Display result
echo %Version% %Type%
goto :eof


::Goto right version
goto %Version: =_%


:Windows_8
echo Windows 8

:Windows_7
echo Windows 7

本文由Aacinidostips发布,版权所有 ©


感谢Endoro的快速回答。 - Vako

3

只需从命令行或批处理文件中使用WMIC即可。这样更简单、更短,而且您可以解析它。

wmic OS get OSArchitecture,caption

谢谢!你说得对,它不能在 XP Home 上运行,但是可以在 XP Professional 上运行。大多数公司不使用家庭版。我猜,在技术网站上寻找所有 Windows 版本的个人用户并不使用家庭版。 :) - Panama Jack
@Endoro 这个回复是给你的。 - Panama Jack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接