【问题标题】:Get windows version in Cygwin在 Cygwin 中获取 windows 版本
【发布时间】:2011-09-04 19:57:36
【问题描述】:

如何获取当前在 Cygwin 下运行的 windows 版本?

我正在维护一个在 Mac、Windows 和 Linux 发行版上运行的自动构建脚本,我需要能够检测它当前在哪个 Windows 版本下运行。

最好我可以让它返回标准的 Windows 版本名称,但我可以与其他代码分开的某种代码也很棒。

我想知道我是否在运行 7、XP、Server 2008 等。

帮助,想法?

【问题讨论】:

    标签: windows bash scripting cygwin


    【解决方案1】:

    像这样:

    eh@winxpsp3 ~
    $ echo `cmd /c ver`
     Microsoft Windows XP [Version 5.1.2600]
    
    eh@winxpsp3 ~
    $
    

    【讨论】:

    • 完美,即使在没有给出“Mirosoft Windows 7”的 Win7 上,但至少代码在那里,而且我相信 Windows 的版本 6 就是 Win7。谢谢
    • 这仅在某些情况下有效,如您的评论所示。我知道我在 Cygwin 下运行 Windows8,版本 6.2.9200。这个答案简单地返回:Microsoft Windows [Version 6.2.9200]@Sedrik,请注意,这表明 不是 版本 6 的所有 Windows 都是 Windows 7。另一个快速说明:我认为反引号已被弃用;应该使用$ echo $(cmd /c ver)。 (对我来说,$ cmd /c ver 给出了相同的输出,减去了一个前导空格。)请参阅@Costa 给出的答案以获取更多信息(包括对我来说是“Windows 8”的内容。)。
    • @bballdave025:这是额外空间的原因。 cmd 输出有 windows 行结束,ver 在 os 版本本身之前输出空行。 Shell 反引号会修剪输出周围的空格、制表符 (\t) 和换行符 (\n),但不会修剪回车符 (\r)。输出反引号内的换行符转换为空格(除非在双引号中使用反引号)。因此,回车和由反引号转换为空格的版本之间的换行符。
    【解决方案2】:

    您可以使用uname -s 并将输出与此进行比较:

    NT-5.0 = W2000

    NT-5.1 = XP

    NT-6.0 = 远景

    NT-6.1 = W7

    我正在运行 Windows 7 64 位,所以我的输出是: CYGWIN_NT-6.1-WOW64。您可以查看更多信息here

    【讨论】:

    • +1 可移植的答案,因为 OP 使用多种环境。
    【解决方案3】:

    您可以从 Windows systeminfo 实用程序中对其进行 grep。

    systeminfo | grep '^OS'
    

    仅操作系统名称:

    systeminfo | sed -n 's/^OS Name:[[:blank:]]*//p'
    

    例子:

    $ systeminfo.exe | grep '^OS'
    OS Name:                   Microsoft Windows 7 Home Premium
    OS Version:                6.1.7601 Service Pack 1 Build 7601
    OS Manufacturer:           Microsoft Corporation
    OS Configuration:          Standalone Workstation
    OS Build Type:             Multiprocessor Free
    $ systeminfo | sed -n 's/^OS Name:[[:blank:]]*//p'
    Microsoft Windows 7 Home Premium
    

    【讨论】:

    • 这应该是选择的答案。接受的答案(对我来说)只是返回:Microsoft Windows [Version 6.2.9200],而这个答案返回所有内容:OS Name: Microsoft Windows 8 \OS Version: 6.2.9200 N/A Build 9200 \OS Manufacturer: Microsoft Corporation \OS Configuration: Standalone Workstation \OS Build Type: Multiprocessor Free。如果我使用 sed 的东西,我得到的正是 OP 所要求的。
    猜你喜欢
    • 2021-06-07
    • 2011-11-02
    • 2011-12-29
    • 2023-04-05
    • 1970-01-01
    • 2020-12-19
    • 2017-02-08
    • 2019-10-23
    相关资源
    最近更新 更多