找回密码
 加入
搜索
查看: 9587|回复: 20

[系统综合] 求助!关于文本输出(已解决)

  [复制链接]
发表于 2012-6-17 12:39:29 | 显示全部楼层 |阅读模式
本帖最后由 surongfu 于 2012-6-25 17:11 编辑

在网上找了一段代码是利用注册表读取硬件信息的,用起来好像比wmi读取更加准确,代码如下
#include "DIY_RegInfo.au3"

$time = TimerInit()

ToolTip('正在获取硬件信息... 很快的,真的很快!',@DesktopWidth / 2 ,@DesktopHeight / 2,"新版硬件信息获取 BBs.wglm.net 小A 版权所有" ,1,2)

$Bios = _BiosGet();注册表BIos获取

$Cpu = _CpuGet();注册表cpu型号获取

$Motherboard = _Motherboard();主板型号,操作系统版本获取

$VGaGet = _VGAGet();注册表显卡型号获取

$Realinfo = _Realinfo();注册表声卡型号获取

$NetWork = _NetworkGet();注册表网卡型号获取

$diskinfo = _DiskGet();注册表硬盘型号获取

$Camer =  _CameraGet();注册表摄像头型号获取

$videoInfo = _videoGet();获取显示器信息,本信息取至于注册表Edid,可能会导致不准确、

$mem = MemGetStats();获取内存大小

ToolTip('')

MsgBox(0,'注册表版—获取硬件信息 耗时:' & Round (TimerDiff($time) / 1000  ,2)  & "秒" , "注册表版—硬件信息获取" & @CRLF _
 & @CRLF & "计算机名:" & @ComputerName _
 & @CRLF & "操作系统:" & $Motherboard[1] & $Motherboard[2] _
 & @CRLF & "BIOS:" & $Bios _ 
 & @CRLF & "处理器:" & $cpu _
 & @CRLF & "主板:" & $Motherboard[0] _
 & @CRLF & "内存:" & Round ($mem[1] / 1000 ,0) & " MB " _
 & @CRLF & "硬盘:" & $diskinfo _
 & @CRLF & "显卡:" & $VGaGet _
 & @CRLF & "声卡:" & $Realinfo _
 & @CRLF & "网卡:" & $NetWork _
 & @CRLF & "摄像头:" & $Camer _
 & @CRLF & "显示器:" & $videoInfo _
 & @CRLF  & @CRLF & @TAB & @TAB &  "转载请注明出处 bbs.wglm.net 小A 版权所有")
现在想请各位大侠帮我改改,将读取到的硬件信息以文本输出,每个硬件名称以逗号隔开,不要换行,我方便用execl统计排列呵呵,输出的文本名称用计算机名称来列名,还有问题就是在帮我写一个保存位置,用网络形式的比如:\\game\info$\

当然我不必要采集这么多信息,只要计算机名称、主板、cpu、显卡、声卡就足够了。。。。。。。需要要到一个库文件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-6-17 14:43:29 | 显示全部楼层
加油哦,这是最基础的东西~
#include 'DIY_RegInfo.au3'

Local $sFile = @ScriptDir & '\info.txt' ;\\game\info$\info.txt
Local $Motherboard = _Motherboard()
FileDelete($sFile)
FileWrite($sFile, '计算机名:' & @ComputerName & ',主板:' & $Motherboard[0] & ',处理器:' & _CpuGet() & ',显卡:' & _VGAGet() & ',声卡:' & _Realinfo())
ShellExecute($sFile)
 楼主| 发表于 2012-6-17 15:33:43 | 显示全部楼层
谢谢A大,但是保存的是info.txt 而不是   "计算机名".txt这样会把以前的复盖掉,且前一次收集的数据也没掉了
发表于 2012-6-17 16:05:32 | 显示全部楼层
回复 3# surongfu

简单改下就行了…
Local $sFile = @ScriptDir & '\' & @ComputerName & '.txt'
 楼主| 发表于 2012-6-17 16:17:34 | 显示全部楼层
现在又遇到个小问题了,比如说共采集了三台计算机硬件配置保存在e:\info\
名称为001.txt 002.txt 003.txt
我使用copy e:\info\*.txt e:\info\硬件.txt
之后我发现合并后的txt文件不会另起一行,而是无限写下去
发表于 2012-6-17 16:36:10 | 显示全部楼层
回复 5# surongfu
#include 'DIY_RegInfo.au3'

Local $sFile = 'e:\info\硬件.txt'
Local $Motherboard = _Motherboard()
FileWrite($sFile, '计算机名:' & @ComputerName & ',主板:' & $Motherboard[0] & ',处理器:' & _CpuGet() & ',显卡:' & _VGAGet() & ',声卡:' & _Realinfo() & @CRLF)
ShellExecute($sFile)
 楼主| 发表于 2012-6-17 16:39:23 | 显示全部楼层
谢谢A大的帮助,果然合并之后会换行了
 楼主| 发表于 2012-6-17 16:47:20 | 显示全部楼层
A大又要麻烦你一下了,我把'\'换成\\192.168.2.247\info$\
怎么不能保存
 楼主| 发表于 2012-6-17 16:49:27 | 显示全部楼层
不好意思,我去查了一下,还不能光换还要把这个当前目录的变量去掉才行@ScriptDir &
 楼主| 发表于 2012-6-17 16:57:17 | 显示全部楼层
最终还是发现了一个问题,虽然能换行,但是新的问题又出现了,比如说在001号上重复运行会重复记录001号机的硬件配置,有没有办法解决在同一机器重复运行不会重复登记,或者是复盖掉原来的配置
发表于 2012-6-17 17:08:23 | 显示全部楼层
最终还是发现了一个问题,虽然能换行,但是新的问题又出现了,比如说在001号上重复运行会重复记录001号机的 ...
surongfu 发表于 2012-6-17 16:57



    用ini文件保存即可。如 “info.ini” 其内容为
[硬件信息]
001=...
002=...
003=...
...
写入时用 IniWrite(),相同的关键字不会重复,只会更新到原来的位置。读取时用 IniRead()
发表于 2012-6-17 17:13:57 | 显示全部楼层
#include 'DIY_RegInfo.au3'

Local $sFile = 'e:\info\硬件.ini'
Local $Motherboard = _Motherboard()
IniWrite($sFile, '硬件信息', @ComputerName, '主板:' & $Motherboard[0] & ',处理器:' & _CpuGet() & ',显卡:' & _VGAGet() & ',声卡:' & _Realinfo() & @CRLF)
;;;以下为读取
Local $sInfo = IniRead($sFile, '硬件信息', @ComputerName, '读取错误')
Msgbox(0, '', $sInfo)
 楼主| 发表于 2012-6-17 17:18:35 | 显示全部楼层
本帖最后由 surongfu 于 2012-6-17 17:19 编辑

谢谢A大不懈的支持,最后我自己调用dos命令来解决重复问题了,但还是发现了一点点小毛病采集时有时候不准确,估计是采集的太快了,能否每采集一种硬件信息时延时sleep(200),
 楼主| 发表于 2012-6-17 17:29:41 | 显示全部楼层
我现在用这样的形式可以解决重复登记问题,就是有时采集不准要两次才准一点估计是采集太快了
能否每采集一种硬件信息时延时sleep(200)
我现在用这样的代码
#include 'DIY_RegInfo.au3'

Local $sFile = @ScriptDir & '\' & @ComputerName & '.txt'
Local $Motherboard = _Motherboard()
FileWrite($sFile, '计算机名:' & @ComputerName & ',主板:' & $Motherboard[0] & ',处理器:' & _CpuGet() & ',显卡:' & _VGAGet() & ',声卡:' & _Realinfo() & @CRLF)
; & @CRLF是换行的意思
RunWait(@ComSpec & ' /c ' &  ' copy /y .\*.txt \\192.168.2.247\info$\', '', 0)
Sleep(200)
RunWait(@ComSpec & ' /c ' &  ' del /q /f .\*.txt', '', 0)
A大如果帮我解决了能否把RunWait(@ComSpec & ' /c ' &  ' copy /y .\*.txt \\192.168.2.247\info$\', '', 0)
写出ini我方便解决到不同环境时要重新编译的麻烦
 楼主| 发表于 2012-6-17 17:47:31 | 显示全部楼层
主要是主板有时会采集乱码其他的没有发现错误,不知道是什么原因
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-18 23:50 , Processed in 0.083041 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表