中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]征寻统计计算机硬件配置的脚本?
作者:
标题: [求助]征寻统计计算机硬件配置的脚本? 上一主题 | 下一主题
szww
初级用户





积分 59
发帖 28
注册 2007-3-23
状态 离线
『楼 主』:  [求助]征寻统计计算机硬件配置的脚本? 使用 LLM 解释/回答一下

想要实现收集计算机主要硬件指标的脚本:
主要包括
CPU: 内存,硬盘,光驱有无
主机名,IP地址及网关,DNS等。

后面的用ipconfig /all 2>nul | findstr "ip gatewar dns" >result.txt 能比较容易实现,但前面的一些硬件设备信息不知有无高人实现。
我使用了一些VBS脚本,但内容过于冗长。。。。。


力求结果精简明了。


2008-8-19 18:51
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下

硬件指标。。。?说得太过模糊了。




心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-8-19 19:25
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
knoppix7
银牌会员





积分 1287
发帖 634
注册 2007-5-2
来自 cmd.exe
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下

systeminfoXXX?


2008-8-19 19:40
查看资料  发短消息  网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:   使用 LLM 解释/回答一下

转帖
@echo off
color 0a
title 硬件检测
mode con cols=90
sc config winmgmt start= auto >nul 2<&1
net start winmgmt 2>1nul
setlocal ENABLEDELAYEDEXPANSION
echo 主版:
for /f "tokens=1,* delims==" %%a in ('wmic BASEBOARD get Manufacturer^,Product^,Version^,SerialNumber /value') do (
set /a tee+=1
if "!tee!" == "3" echo 制造商 = %%b
if "!tee!" == "4" echo 型 号 = %%b
if "!tee!" == "5" echo 序列号 = %%b
if "!tee!" == "6" echo 版 本 = %%b
)
set tee=0
echo BIOS:
for /f "tokens=1,* delims==" %%a in ('wmic bios get

CurrentLanguage^,Manufacturer^,SMBIOSBIOSVersion^,SMBIOSMajorVersion^,SMBIOSMinorVersion^,ReleaseDate /value') do (
set /a tee+=1
if "!tee!" == "3" echo 当前语言 = %%b
if "!tee!" == "4" echo 制造商 = %%b
if "!tee!" == "5" echo 发行日期 = %%b
if "!tee!" == "6" echo 版 本 = %%b
if "!tee!" == "7" echo SMBIOSMajorVersion = %%b
if "!tee!" == "8" echo SMBIOSMinorVersion = %%b
)
set tee=0
echo.
echo CPU:
for /f "tokens=1,* delims==" %%a in ('wmic cpu get name^,ExtClock^,CpuStatus^,Description /value') do (
set /a tee+=1
if "!tee!" == "3" echo CPU个数 = %%b
if "!tee!" == "4" echo 处理器版本 = %%b
if "!tee!" == "5" echo 外 频 = %%b
if "!tee!" == "6" echo 名称及主频率 = %%b
)
set tee=0
echo.
echo 显示器:
for /f "tokens=1,* delims==" %%a in ('wmic DESKTOPMONITOR get name^,ScreenWidth^,ScreenHeight^,PNPDeviceID /value') do (
set /a tee+=1
if "!tee!" == "3" echo 类 型 = %%b
if "!tee!" == "4" echo 其他信息 = %%b
if "!tee!" == "5" echo 屏幕高 = %%b
if "!tee!" == "6" echo 屏幕宽 = %%b
)
set tee=0
echo.
echo 硬 盘:
for /f "tokens=1,* delims==" %%a in ('wmic DISKDRIVE get model^,interfacetype^,size^,totalsectors^,partitions /value') do (
set /a tee+=1
if "!tee!" == "3" echo 接口类型 = %%b
if "!tee!" == "4" echo 硬盘型号 = %%b
if "!tee!" == "5" echo 分区数 = %%b
if "!tee!" == "6" echo 容 量 = %%b
if "!tee!" == "7" echo 总扇区 = %%b
)
echo 分区信息:
wmic LOGICALDISK where mediatype='12' get description,deviceid,filesystem,size,freespace
set tee=0
echo.
echo 网 卡:
for /f "tokens=1,* delims==" %%a in ('wmic NICCONFIG where "index='1'" get ipaddress^,macaddress^,description /value') do (
set /a tee+=1
if "!tee!" == "3" echo 网卡类型 = %%b
if "!tee!" == "4" echo 网卡IP = %%b
if "!tee!" == "5" echo 网卡MAC = %%b
)
set tee=0
echo.
echo 打印机:
for /f "tokens=1,* delims==" %%a in ('wmic PRINTER get caption /value') do (
set /a tee+=1
if "!tee!" == "3" echo 打印机名字 = %%b
)
set tee=0
echo.
echo 声 卡:
for /f "tokens=1,* delims==" %%a in ('wmic SOUNDDEV get name^,deviceid /value') do (
set /a tee+=1
if "!tee!" == "3" echo 其他信息 = %%b
if "!tee!" == "4" echo 型 号 = %%b
)
set tee=0
echo.
echo 内 存:
for /f "tokens=1,* delims==" %%a in ('systeminfo^|find "内存"') do (
echo %%a 4534 %%b
)
echo.
echo 显 卡:
del /f "%TEMP%\temp.txt" 2>nul
dxdiag /t %TEMP%\temp.txt
:显卡
rem 这里需要30秒左右!
if EXIST "%TEMP%\temp.txt" (
for /f "tokens=1,2,* delims=:" %%a in ('findstr /c:" Card name:" /c:"Display Memory:" /c:"Current Mode:" "%TEMP%\temp.txt"') do (
set /a tee+=1
if !tee! == 1 echo 显卡型号: %%b
if !tee! == 2 echo 显存大小: %%b
if !tee! == 3 echo 当前设置: %%b
) ) else (
ping /n 2 127.1>nul
goto 显卡
)
set /p var=需要额外信息吗(y/n):
if /i %var% == y notepad "%TEMP%\temp.txt"
del /f "%TEMP%\temp.txt" 2>nul
pause




2008-8-19 20:50
查看资料  发短消息  网志   编辑帖子  回复  引用回复
szww
初级用户





积分 59
发帖 28
注册 2007-3-23
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

非常感谢楼上HAT 提供如此精彩的脚本。
略显遗憾,程序执行时间较长。因为我设置的是域关机脚本,不想让大家感觉关机时间过长。
先试试添加IP等其他信息的搜集,的确比较完美了。


2008-8-20 09:36
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
szww
初级用户





积分 59
发帖 28
注册 2007-3-23
状态 离线
『第 6 楼』:   使用 LLM 解释/回答一下

在下面一行,我加入输出到文本文件后,出现输入编码及格式错误。不知有没有办法解决。(不输出到文本文件,在屏幕显示内容及格式正常)
wmic LOGICALDISK where mediatype='12' get description,deviceid,filesystem,size,freespace >> c:\%computername%.txt

结果如下(在记事本中打开有乱码且没有分行):

分区信息:
D e s c r i p t i o n D e v i c e I D F i l e S y s t e m F r e e S p a c e S i z e

,g0W鶹歔義豽 C : N T F S 2 3 6 9 6 8 7 5 5 2 1 2 5 8 4 6 4 4 6 0 8

,g0W鶹歔義豽 D : N T F S 4 3 3 9 7 4 0 6 7 2 4 4 7 6 1 9 3 9 9 6 8

,g0W鶹歔義豽 E : N T F S 4 3 7 2 0 2 1 2 4 8 1 0 2 6 9 2 5 8 5 4 7 2

Last edited by szww on 2008-8-20 at 10:55 AM ]


2008-8-20 10:54
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 7 楼』:   使用 LLM 解释/回答一下

编码格式问题了。

检查你计算机的编码格式,本机上修正就可以了。




知,不觉多。不知,乃求知
2008-8-20 10:57
查看资料  发短消息  网志   编辑帖子  回复  引用回复
szww
初级用户





积分 59
发帖 28
注册 2007-3-23
状态 离线
『第 8 楼』:   使用 LLM 解释/回答一下

同样的vmic输出,其他的编码格式是正常的,却唯独这里不匹配!?
在代码中如何修改以纠正呢?


2008-8-20 14:47
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 9 楼』:   使用 LLM 解释/回答一下

D e s c r i p t i o n D e v i c e I D F i l e S y s t e m F r e e S p a c e S i z e
这里可能是 unicode 编码格式

但你在显示器上应该显示的是:Description DeviceID FileSystem FreeSpace Size

你把代码页改成 chcp 936 试下?




知,不觉多。不知,乃求知
2008-8-20 15:00
查看资料  发短消息  网志   编辑帖子  回复  引用回复
szww
初级用户





积分 59
发帖 28
注册 2007-3-23
状态 离线
『第 10 楼』:   使用 LLM 解释/回答一下

Originally posted by flyinspace at 2008-8-20 03:00 PM:
D e s c r i p t i o n D e v i c e I D F i l e S y s t e m F r e e S p a c e S i z e
这里可能是 unicode 编码格式

但你在显示器上应该显示的是:Descriptio ...


具体是指在我的BAT中设置代码还是在显示的程序中,确实不懂如何设置啊?

不知与语言版本是否有关系。
当前语言 = n|US|iso8859-1

Last edited by szww on 2008-8-20 at 04:26 PM ]


2008-8-20 16:10
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
szww
初级用户





积分 59
发帖 28
注册 2007-3-23
状态 离线
『第 11 楼』:   使用 LLM 解释/回答一下

上面的脚本取的CPU个数值意义不大,但对是否为双核 不知能否判断!

Last edited by szww on 2008-8-21 at 11:45 AM ]


2008-8-21 11:32
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 12 楼』:   使用 LLM 解释/回答一下

%NUMBER_OF_PROCESSORS%判断几个cpu呀。

你把语言设置为 简体中文吧。




知,不觉多。不知,乃求知
2008-8-21 15:28
查看资料  发短消息  网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 13 楼』:   使用 LLM 解释/回答一下

%NUMBER_OF_PROCESSORS%在单个双核CPU系统中的值是2
它不能判断物理CPU的个数




2008-8-21 15:38
查看资料  发短消息  网志   编辑帖子  回复  引用回复
szww
初级用户





积分 59
发帖 28
注册 2007-3-23
状态 离线
『第 14 楼』:   使用 LLM 解释/回答一下

谢谢,已经用变量实现内核数量输出。
但仍然有以下两个bug:
1、那行乱码始终无法解决,不知何故!

尝试了用437、850 和936都无法将结果{本地固定磁盘} 正常输出到TXT,其中仍然显示乱码{鶹歔義豽},但在DOS下ECHO输出唯有936下正常??????

chcp 437>nul
850
936

2、在多网卡的电脑中,无法使用index号来对当前启用的网卡进行查询,导致有时无法取到正确的IP信息。不知有没更好的办法!

Last edited by szww on 2008-8-21 at 06:00 PM ]


2008-8-21 16:49
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: