|
szww
初级用户
积分 59
发帖 28
注册 2007-3-23
状态 离线
|
『楼 主』:
[求助]征寻统计计算机硬件配置的脚本?
想要实现收集计算机主要硬件指标的脚本:
主要包括
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 楼』:
硬件指标。。。?说得太过模糊了。
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-8-19 19:25 |
|
|
knoppix7
银牌会员
积分 1287
发帖 634
注册 2007-5-2 来自 cmd.exe
状态 离线
|
|
2008-8-19 19:40 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
4 楼』:
转帖
@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 楼』:
非常感谢楼上HAT 提供如此精彩的脚本。
略显遗憾,程序执行时间较长。因为我设置的是域关机脚本,不想让大家感觉关机时间过长。
先试试添加IP等其他信息的搜集,的确比较完美了。
|
|
2008-8-20 09:36 |
|
|
szww
初级用户
积分 59
发帖 28
注册 2007-3-23
状态 离线
|
『第
6 楼』:
在下面一行,我加入输出到文本文件后,出现输入编码及格式错误。不知有没有办法解决。(不输出到文本文件,在屏幕显示内容及格式正常)
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 楼』:
编码格式问题了。
检查你计算机的编码格式,本机上修正就可以了。
|
知,不觉多。不知,乃求知 |
|
2008-8-20 10:57 |
|
|
szww
初级用户
积分 59
发帖 28
注册 2007-3-23
状态 离线
|
『第
8 楼』:
同样的vmic输出,其他的编码格式是正常的,却唯独这里不匹配!?
在代码中如何修改以纠正呢?
|
|
2008-8-20 14:47 |
|
|
flyinspace
银牌会员
积分 1206
发帖 517
注册 2007-3-25
状态 离线
|
『第
9 楼』:
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 楼』:
Quote: | 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 楼』:
上面的脚本取的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 楼』:
%NUMBER_OF_PROCESSORS%判断几个cpu呀。
你把语言设置为 简体中文吧。
|
知,不觉多。不知,乃求知 |
|
2008-8-21 15:28 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
13 楼』:
%NUMBER_OF_PROCESSORS%在单个双核CPU系统中的值是2
它不能判断物理CPU的个数
|
|
|
2008-8-21 15:38 |
|
|
szww
初级用户
积分 59
发帖 28
注册 2007-3-23
状态 离线
|
『第
14 楼』:
谢谢,已经用变量实现内核数量输出。
但仍然有以下两个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 |
|