文章目录

  • (一)命令行取得信息
    • (1.1)Windows
      • (1.1.1)操作系统名称版本
      • (1.1.2)CPU名称
    • (1.2)Linux
      • (1.2.1)操作系统名称版本
      • (1.2.2)CPU名称
    • (1.3)实测
  • (二)程序调用命令行
    • (2.1)Golang
    • (2.2)Java
    • (2.3)C++
    • (2.4)Pascal
      • (2.4.1)Lazarus - Free Pascal
      • (2.4.2)Delphi

用不同的开发语言/工具,获取操作系统和CPU等信息方法不一样,真的记不住。
返回的文字方式也很多样,有时仅仅显示个Linux了事。
但不管什么语言写的程序,都通过调用命令行来获得这些信息,则结果比较统一好看。

(一)命令行取得信息

(1.1)Windows

(1.1.1)操作系统名称版本

通过ver命令查看版本号,并且只看包含Windows字样的一行。
不过由于Windows神奇的版本号设置,就算是Win11看到的也是10.0呢(好像22000以上就是Win11)。

C:\>ver | find /I "Windows"
Microsoft Windows [版本 10.0.22621.900]

(1.1.2)CPU名称

通过wmic指令查看CPU的名称,因为结果第一行是标题,所以查找不看包含标题Name的一行。
PS:假设CPU的名字里面有Name那就看不到了……有这种名字么……?
同理可以查询其它CPU参数信息(比如多少核),或其它硬件信息,这里不再赘述。

C:\>wmic cpu get name | find /V /I "Name"
12th Gen Intel(R) Core(TM) i9-12900F

(1.2)Linux

(1.2.1)操作系统名称版本

通过查看/etc/os-release里的好听的名字,可以看到发行版名称和版本。
然后uname -r查看Linux的内核版本。

[shion@homewsl ~]$ cat /etc/os-release | grep PRETTY | cut -d '"' -f 2
Ubuntu 22.04.1 LTS[shion@homewsl /]$ uname -r
5.15.74.2-microsoft-standard-WSL2

(1.2.2)CPU名称

通过查看/proc/cpuinfo里的model name,得到CPU名称。
然后去掉重复(每个核心都有一份重复的CPU名称)。
然后取这行冒号:后面的名称,
并去掉名称前面的空格。

[shion@homewsl ~]$ cat /proc/cpuinfo |grep 'model name'|uniq | cut -d ':' -f 2 | sed 's/^[ ]*//g'
12th Gen Intel(R) Core(TM) i9-12900F

(1.3)实测

  • Microsoft Windows [版本 10.0.22621.900]
  • Ubuntu 22.04.1 LTS 5.15.74.2-microsoft-standard-WSL2
  • Anolis OS 7.9 3.10.0-1160.80.1.0.1.an7.x86_64
  • openEuler 22.03 LTS 5.10.0-60.68.0.93.oe2203.x86_64
  • CentOS Linux7 (Core) 3.10.0-1160.71.1.el7.x86_64
  • ……

(二)程序调用命令行

⚠️ 在Windows下如果要执行ver指令,需要在cmd.exe当中执行(因为ver不是一个单独的程序)。所以上面例子指令改为:cmd.exe /C ver
⚠️ 在Windows下执行执行如果加上管道,似乎没法返回结果。Windows真麻烦……

(2.1)Golang

程序通过命令行获取操作系统名称+版本+CPU名称等各种信息相关推荐

  1. nvidia命令不可用linux,linux – 如何从命令行获取nvidia驱动程序版本?

    使用nvidia-smi应该告诉你: bwood@mybox:~$ nvidia-smi Mon Oct 29 12:30:02 2012 +----------------------------- ...

  2. linux 获取内核线程数,如何从命令行获取Linux中的CPU /内核数量?

    前言: 基于/proc/cpuinfo的答案的问题是,它们parsing了供人类使用的信息,因此缺乏为机器分析devise的稳定格式 :输出格式可能因平台和运行时间条件而有所不同; 在Linux上使用 ...

  3. 从命令行获取两个路径名称并找出文件一样内容一样的两个文件

    import os import sys import subprocess import hashlibdir1 = sys.argv[1] dir2 = sys.argv[2]class File ...

  4. c语言程序的命令行输入,C程序获取命令行参数

    命令行参数 命令行界面中,可执行文件可以在键入命令的同一行中获取参数用于具体的执行命令.无论是Python.Java还是C等等,这些语言都能够获取命令行参数(Command-line argument ...

  5. linux添加磁盘后进入grub,从硬盘安装 Linux 和从 GRUB 命令行启动操作系统

    标题 +=================================================+ |  从硬盘安装 Linux 和从 GRUB 命令行启动操作系统  | +======== ...

  6. linux 从命令行启动,硬盘安装Linux和从Grub命令行启动操作系统

    发信人: (飞象过河), 信区: Linux 标 题: 硬盘安装Linux和从Grub命令行启动操作系统 发信站: 瀚海星云 (2004年10月18日22:44:09 星期一), 站内信件 标题 += ...

  7. 安装Linux系统时卡在命令行了,从硬盘安装Linux和从Grub命令行启动操作系统

    从硬盘安装Linux和从Grub命令行启动操作系统 发表于:2007-07-04来源:作者:点击数: 标签: 内容简介 ---------------------------------------- ...

  8. 如何用cmd看计算机硬件配置,如何通过命令行获取计算机硬件详细信息

    你可能会有很多的原因需要查清计算机硬件的详细信息.例如,你需要修复某些问题并在论坛上发出请求,人们可能会立即询问你的计算机具体的信息.或者当你想要升级计算机配置时,你需要知道现有的硬件型号和能够升级的 ...

  9. Go语言程序的命令行参数

    获取命令行参数是程序功能多样化的必要前提. 这个例子展示Go语言如何获得程序的命令行参数. Go语言程序: // echoarg project main.go package mainimport ...

最新文章

  1. Java 专业人士必备的书籍和网站列表
  2. 我看暴库漏洞原理及规律
  3. 解决idea application context not configured for this file的问题
  4. Storm 05_Storm并发机制通信机制
  5. 委托声明----委托实例化-----委托调用
  6. Java高并发编程详解系列-单线程执行设计模式
  7. Android开发 BufferedWriter写入报错怎么办 啊
  8. 汇编工具MASM包下载
  9. Spring集成ESAPI
  10. Win10无法访问共享文件,错误代码0x80004005
  11. 尹稚:中国城镇化战略研究
  12. Python函数之def定义函数
  13. linux文件夹英文全称,Linux--Ubuntu中文文件夹转英文
  14. 关于IE、Firefox、Opera页面呈现异同 (转于纯蓝)
  15. page_to_pfn 、virt_to_page、 virt_to_phys、page、页帧pfn、内核虚拟地址、物理内存地址linux内核源码详解
  16. 紫铜带、黄铜带、锡磷青铜带、白铜带的特性
  17. 游戏AI行为选择算法一览
  18. 人工智能:风口之上泡沫之中谨慎入坑
  19. Zhong__Python math
  20. 无需安装的Linux Live CD--第二篇:实战Knoppix

热门文章

  1. highchart 组织结构图
  2. 2017qs世界计算机排名,2017qs世界大学学科排名完整版
  3. poj 3687(拓扑排序)
  4. 苹果手机用计算机打不开怎么回事啊,苹果手机商店打不开怎么办
  5. 教你亲手制作一个虚拟数字人,超全步骤详解
  6. iOS 项目源码大全 github 国内外大神
  7. python sklearn svm_文本分类和预测 sklearn.svm.LinearSVC(1)
  8. 斗地主自动出牌函数c语言,斗地主AI出牌(示例代码)
  9. 连接Mysql提示Can’t connect to local MySQL server through socket的解决方法
  10. zeppelin报错jdk版本低