surongfu 发表于 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 & $Motherboard _
& @CRLF & "BIOS:" & $Bios _
& @CRLF & "处理器:" & $cpu _
& @CRLF & "主板:" & $Motherboard _
& @CRLF & "内存:" & Round ($mem / 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、显卡、声卡就足够了。。。。。。。需要要到一个库文件

afan 发表于 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 & ',处理器:' & _CpuGet() & ',显卡:' & _VGAGet() & ',声卡:' & _Realinfo())
ShellExecute($sFile)

surongfu 发表于 2012-6-17 15:33:43

谢谢A大,但是保存的是info.txt 而不是   "计算机名".txt这样会把以前的复盖掉,且前一次收集的数据也没掉了

afan 发表于 2012-6-17 16:05:32

回复 3# surongfu

简单改下就行了…Local $sFile = @ScriptDir & '\' & @ComputerName & '.txt'

surongfu 发表于 2012-6-17 16:17:34

现在又遇到个小问题了,比如说共采集了三台计算机硬件配置保存在e:\info\
名称为001.txt 002.txt 003.txt
我使用copy e:\info\*.txt e:\info\硬件.txt
之后我发现合并后的txt文件不会另起一行,而是无限写下去

afan 发表于 2012-6-17 16:36:10

回复 5# surongfu #include 'DIY_RegInfo.au3'

Local $sFile = 'e:\info\硬件.txt'
Local $Motherboard = _Motherboard()
FileWrite($sFile, '计算机名:' & @ComputerName & ',主板:' & $Motherboard & ',处理器:' & _CpuGet() & ',显卡:' & _VGAGet() & ',声卡:' & _Realinfo() & @CRLF)
ShellExecute($sFile)

surongfu 发表于 2012-6-17 16:39:23

谢谢A大的帮助,果然合并之后会换行了

surongfu 发表于 2012-6-17 16:47:20

{:face (229):}A大又要麻烦你一下了,我把'\'换成\\192.168.2.247\info$\
怎么不能保存

surongfu 发表于 2012-6-17 16:49:27

不好意思,我去查了一下,还不能光换还要把这个当前目录的变量去掉才行@ScriptDir &

surongfu 发表于 2012-6-17 16:57:17

最终还是发现了一个问题,虽然能换行,但是新的问题又出现了,比如说在001号上重复运行会重复记录001号机的硬件配置,有没有办法解决在同一机器重复运行不会重复登记,或者是复盖掉原来的配置

afan 发表于 2012-6-17 17:08:23

最终还是发现了一个问题,虽然能换行,但是新的问题又出现了,比如说在001号上重复运行会重复记录001号机的 ...
surongfu 发表于 2012-6-17 16:57 http://www.autoitx.com/images/common/back.gif


    用ini文件保存即可。如 “info.ini” 其内容为
[硬件信息]
001=...
002=...
003=...
...
写入时用 IniWrite(),相同的关键字不会重复,只会更新到原来的位置。读取时用 IniRead()

afan 发表于 2012-6-17 17:13:57

#include 'DIY_RegInfo.au3'

Local $sFile = 'e:\info\硬件.ini'
Local $Motherboard = _Motherboard()
IniWrite($sFile, '硬件信息', @ComputerName, '主板:' & $Motherboard & ',处理器:' & _CpuGet() & ',显卡:' & _VGAGet() & ',声卡:' & _Realinfo() & @CRLF)
;;;以下为读取
Local $sInfo = IniRead($sFile, '硬件信息', @ComputerName, '读取错误')
Msgbox(0, '', $sInfo)

surongfu 发表于 2012-6-17 17:18:35

本帖最后由 surongfu 于 2012-6-17 17:19 编辑

谢谢A大不懈的支持,最后我自己调用dos命令来解决重复问题了,但还是发现了一点点小毛病采集时有时候不准确,估计是采集的太快了,能否每采集一种硬件信息时延时sleep(200),

surongfu 发表于 2012-6-17 17:29:41

我现在用这样的形式可以解决重复登记问题,就是有时采集不准要两次才准一点估计是采集太快了
能否每采集一种硬件信息时延时sleep(200)
我现在用这样的代码
#include 'DIY_RegInfo.au3'

Local $sFile = @ScriptDir & '\' & @ComputerName & '.txt'
Local $Motherboard = _Motherboard()
FileWrite($sFile, '计算机名:' & @ComputerName & ',主板:' & $Motherboard & ',处理器:' & _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我方便解决到不同环境时要重新编译的麻烦

surongfu 发表于 2012-6-17 17:47:31

主要是主板有时会采集乱码其他的没有发现错误,不知道是什么原因
页: [1] 2
查看完整版本: 求助!关于文本输出(已解决)