找回密码
 加入
搜索
查看: 1801|回复: 6

如何将循环中得到的值,加入数组?

  [复制链接]
发表于 2009-12-21 16:37:26 | 显示全部楼层 |阅读模式
本帖最后由 ac5474012 于 2009-12-23 10:58 编辑

下面是个例子,我想将$rCPU在循环中的20个值分别加入20个数组,在算平均值。但是$rCPUzh[$a]=$rCPU这句显然不恰当。请问如何解决?
$a =1
Local $rCPUzh
While $a<=21
        $rCPU = CurrentCPURate()
$rRAM = CurrentRAMRate()
                Sleep(1000)
$sxdx = @YEAR & "-" & @MON & "-" & @MDAY & "_" & @HOUR & ":" & @MIN & ":" & @SEC
IniWrite(@ScriptDir & "\服务器状态.ini", "cpu占用率", "检测时间 " & $sxdx, "cpu占用率为 " & $rCPU)
IniWrite(@ScriptDir & "\服务器状态.ini", "内存占用量", "检测时间 " & $sxdx, "内存使用量为 " & $rRAM)
        $rCPUzh[$a]=$rCPU
$a=$a+1

WEnd
已经解决了,是我对基础知识不熟
发表于 2009-12-21 16:51:44 | 显示全部楼层
本帖最后由 netegg 于 2009-12-21 16:59 编辑

$rCPUzh这是个什么玩意?数组?
$rCPU又是个什么玩意?
是不是想这样?
local $rCpunow, $rCpupast=0, $rCpu, $a=1
while a <= 20
  $rCpunow= currentcpurate()
  $rCpu =  $rCpunow +$rCpupast
  $rCpupast= $rCpu
  $a += 1
wend
$average = $rCpu / 20
 楼主| 发表于 2009-12-21 17:07:43 | 显示全部楼层
$rCPUzh这是个什么玩意?数组?
$rCPU又是个什么玩意?
是不是想这样?
local $rCpunow, $rCpupast=0, $ ...
netegg 发表于 2009-12-21 16:51


不 $rCPUzh 是一个数组,$rCPU是一个数值。我在循环中取得20个,我想把他们编入数组在算平均值。上面只是个部分代码。下面是全部代码。
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=..\..\图标\优化图标\winxp\toolbar\Computer _ eMac _ Off.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Comment=启动检测服务器的cpu使用率,内存使用率,硬盘使用率。需要配合计划任务使用。
#AutoIt3Wrapper_Res_Fileversion=3.3.0.2
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=p
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#Region AutoIt3Wrapper 预编译参数(常用参数)
;#AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%                ;自定义资源段
;#AutoIt3Wrapper_Run_Tidy=                                                   ;脚本整理
;#AutoIt3Wrapper_Run_Obfuscator=                                                      ;代码迷惑
;#AutoIt3Wrapper_Run_AU3Check=                                                                 ;语法检查
;#AutoIt3Wrapper_Run_Before=                                                                 ;运行前
;#AutoIt3Wrapper_Run_After=                                                                        ;运行后
#EndRegion AutoIt3Wrapper 预编译参数(常用参数)
#cs ____________________________________
        
        Au3 版本:
        脚本作者:AC
        Email:guojimail@gmail.com
        QQ/TM:651420196
        脚本版本:
        脚本功能:
        1.检测CPU使用率
        2.检测内存使用率
        3.检测硬盘使用率
        主体程序已经完成,将这个放在计划任务中每小时执行一次。
        有待完成
        1.检测SQL是否正常
        2.将检测的数据回传
        3.将系统日志回传
        4.提醒每天是否有回传(用于检测软件是否正常运行)
        5.测试是否对服务器的稳定工作有妨碍
#ce _______________脚本开始_________________

#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
 

#Region ### START Koda GUI section ### Form=D:\Personal\Desktop\CPU_RAM.kxf

;Local $rCPU, $rRAM
;$rCPU = CurrentCPURate()
;$rRAM = CurrentRAMRate()
;#include <SmtpMailer.au3>
ypkj()
$a =1
Local $rCPUzh[0] $a
While $a<=21
        $rCPU = CurrentCPURate()
$rRAM = CurrentRAMRate()
                Sleep(1000)
$sxdx = @YEAR & "-" & @MON & "-" & @MDAY & "_" & @HOUR & ":" & @MIN & ":" & @SEC
IniWrite(@ScriptDir & "\服务器状态.ini", "cpu占用率", "检测时间 " & $sxdx, "cpu占用率为 " & $rCPU)
IniWrite(@ScriptDir & "\服务器状态.ini", "内存占用量", "检测时间 " & $sxdx, "内存使用量为 " & $rRAM)
        $rCPUzh[$a]=$rCPU
$a=$a+1

WEnd

MsgBox(0,$rCPUzh[1],$rCPUzh[2]&$rCPUzh[3]&$rCPUzh[4]&$rCPUzh[5])
Func CurrentCPURate()
        $wbemServices = ObjGet("winmgmts:\\.\root\cimv2")
        $wbemObjectSet = $wbemServices.ExecQuery("Select * from Win32_Processor")
        For $wbemObject In $wbemObjectSet
                $dd = $wbemObject.LoadPercentage
        Next
        Return $dd
EndFunc   ;==>CurrentCPURate

Func CurrentRAMRate()
        Local $Array[7]
        $Array = MemGetStats()
        Return $Array[1]
EndFunc   ;==>CurrentRAMRate

Func ypkj()
$cppf = DriveGetDrive("FIXED")
$sxdx = @YEAR & "-" & @MON & "-" & @MDAY & "_" & @HOUR & ":" & @MIN & ":" & @SEC
If Not @error Then
        For $i = 1 To $cppf[0]
                Local $pf,$dif
                $begin = TimerInit()
                $pf = $cppf[$i]
                $kj = DriveSpaceTotal($pf & "")              
                $kykj = DriveSpaceFree($pf & "")
                $dif = TimerDiff($begin)
                IniWrite(@ScriptDir & "\服务器状态.ini", "磁盘空间" , $i&"检测时间 "& $sxdx, $pf & "盘 全部空间为: " & $kj & " 可用空间为: " & $kykj)
        Next
        EndIf
        EndFunc   ;==>CurrentRAMRate
 楼主| 发表于 2009-12-21 17:13:55 | 显示全部楼层
解决了

是变量错了
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=..\..\图标\优化图标\winxp\toolbar\Computer _ eMac _ Off.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Comment=启动检测服务器的cpu使用率,内存使用率,硬盘使用率。需要配合计划任务使用。
#AutoIt3Wrapper_Res_Fileversion=3.3.0.2
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=p
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#Region AutoIt3Wrapper 预编译参数(常用参数)
;#AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%                ;自定义资源段
;#AutoIt3Wrapper_Run_Tidy=                                                   ;脚本整理
;#AutoIt3Wrapper_Run_Obfuscator=                                                      ;代码迷惑
;#AutoIt3Wrapper_Run_AU3Check=                                                                 ;语法检查
;#AutoIt3Wrapper_Run_Before=                                                                 ;运行前
;#AutoIt3Wrapper_Run_After=                                                                        ;运行后
#EndRegion AutoIt3Wrapper 预编译参数(常用参数)
#cs ____________________________________
        
        Au3 版本:
        脚本作者:AC
        Email:guojimail@gmail.com
        QQ/TM:651420196
        脚本版本:
        脚本功能:
        1.检测CPU使用率
        2.检测内存使用率
        3.检测硬盘使用率
        主体程序已经完成,将这个放在计划任务中每小时执行一次。
        有待完成
        1.检测SQL是否正常
        2.将检测的数据回传
        3.将系统日志回传
        4.提醒每天是否有回传(用于检测软件是否正常运行)
        5.测试是否对服务器的稳定工作有妨碍
#ce _______________脚本开始_________________

#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
 

#Region ### START Koda GUI section ### Form=D:\Personal\Desktop\CPU_RAM.kxf

;Local $rCPU, $rRAM
;$rCPU = CurrentCPURate()
;$rRAM = CurrentRAMRate()
;#include <SmtpMailer.au3>
ypkj()
$a =1
Local $rCPUzh[22]
While $a<=21
        $rCPU = CurrentCPURate()
$rRAM = CurrentRAMRate()
                Sleep(1000)
$sxdx = @YEAR & "-" & @MON & "-" & @MDAY & "_" & @HOUR & ":" & @MIN & ":" & @SEC
IniWrite(@ScriptDir & "\服务器状态.ini", "cpu占用率", "检测时间 " & $sxdx, "cpu占用率为 " & $rCPU)
IniWrite(@ScriptDir & "\服务器状态.ini", "内存占用量", "检测时间 " & $sxdx, "内存使用量为 " & $rRAM)
        $rCPUzh[$a]=$rCPU
$a=$a+1

WEnd

MsgBox(0,$rCPUzh[1],$rCPUzh[2]&$rCPUzh[3]&$rCPUzh[4]&$rCPUzh[5])
Func CurrentCPURate()
        $wbemServices = ObjGet("winmgmts:\\.\root\cimv2")
        $wbemObjectSet = $wbemServices.ExecQuery("Select * from Win32_Processor")
        For $wbemObject In $wbemObjectSet
                $dd = $wbemObject.LoadPercentage
        Next
        Return $dd
EndFunc   ;==>CurrentCPURate

Func CurrentRAMRate()
        Local $Array[7]
        $Array = MemGetStats()
        Return $Array[1]
EndFunc   ;==>CurrentRAMRate

Func ypkj()
$cppf = DriveGetDrive("FIXED")
$sxdx = @YEAR & "-" & @MON & "-" & @MDAY & "_" & @HOUR & ":" & @MIN & ":" & @SEC
If Not @error Then
        For $i = 1 To $cppf[0]
                Local $pf,$dif
                $begin = TimerInit()
                $pf = $cppf[$i]
                $kj = DriveSpaceTotal($pf & "")              
                $kykj = DriveSpaceFree($pf & "")
                $dif = TimerDiff($begin)
                IniWrite(@ScriptDir & "\服务器状态.ini", "磁盘空间" , $i&"检测时间 "& $sxdx, $pf & "盘 全部空间为: " & $kj & " 可用空间为: " & $kykj)
        Next
        EndIf
        EndFunc   ;==>CurrentRAMRate
发表于 2009-12-21 17:54:12 | 显示全部楼层
帮你改进一下:
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=..\..\图标\优化图标\winxp\toolbar\Computer _ eMac _ Off.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Comment=启动检测服务器的cpu使用率,内存使用率,硬盘使用率。需要配合计划任务使用。
#AutoIt3Wrapper_Res_Fileversion=3.3.0.2
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=p
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#Region AutoIt3Wrapper 预编译参数(常用参数)
;#AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%                ;自定义资源段
;#AutoIt3Wrapper_Run_Tidy=                                                   ;脚本整理
;#AutoIt3Wrapper_Run_Obfuscator=                                                      ;代码迷惑
;#AutoIt3Wrapper_Run_AU3Check=                                                                 ;语法检查
;#AutoIt3Wrapper_Run_Before=                                                                 ;运行前
;#AutoIt3Wrapper_Run_After=                                                                        ;运行后
#EndRegion AutoIt3Wrapper 预编译参数(常用参数)
#cs ____________________________________
        
        Au3 版本:
        脚本作者:AC
        Email:guojimail@gmail.com
        QQ/TM:651420196
        脚本版本:
        脚本功能:
        1.检测CPU使用率
        2.检测内存使用率
        3.检测硬盘使用率
        主体程序已经完成,将这个放在计划任务中每小时执行一次。
        有待完成
        1.检测SQL是否正常
        2.将检测的数据回传
        3.将系统日志回传
        4.提醒每天是否有回传(用于检测软件是否正常运行)
        5.测试是否对服务器的稳定工作有妨碍
#ce _______________脚本开始_________________

#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
 

#Region ### START Koda GUI section ### Form=D:\Personal\Desktop\CPU_RAM.kxf

;Local $rCPU, $rRAM
;$rCPU = CurrentCPURate()
;$rRAM = CurrentRAMRate()
;#include <SmtpMailer.au3>
ypkj()
$a =1
Local $rCPUzh[22]
While $a<=21
        $rCPU = CurrentCPURate()
$rRAM = round (CurrentRAMRate()/1024,2)&"M"
                Sleep(1000)
$sxdx = @YEAR & "-" & @MON & "-" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC
IniWrite(@ScriptDir & "\服务器状态.ini", "cpu占用", $sxdx,$rCPU)
IniWrite(@ScriptDir & "\服务器状态.ini", "可用物理内存", $sxdx,$rRAM)
        $rCPUzh[$a]=$rCPU
$a=$a+1

WEnd

MsgBox(0,$rCPUzh[1],$rCPUzh[2]&$rCPUzh[3]&$rCPUzh[4]&$rCPUzh[5])
Func CurrentCPURate()
        $wbemServices = ObjGet("winmgmts:\\.\root\cimv2")
        $wbemObjectSet = $wbemServices.ExecQuery("Select * from Win32_Processor")
        For $wbemObject In $wbemObjectSet
                $dd = $wbemObject.LoadPercentage
        Next
        Return $dd
EndFunc   ;==>CurrentCPURate

Func CurrentRAMRate()
        Local $Array[7]
        $Array = MemGetStats()
        Return $Array[2]
EndFunc   ;==>CurrentRAMRate

Func ypkj()
$cppf = DriveGetDrive("FIXED")
$sxdx = @YEAR & "-" & @MON & "-" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC
If Not @error Then
        For $i = 1 To $cppf[0]
                Local $pf,$dif
                $begin = TimerInit()
                $pf = $cppf[$i]
                $kj = DriveSpaceTotal($pf & "")              
                $kykj = round(DriveSpaceFree($pf & "")/1024,2)&"G"
                $dif = TimerDiff($begin)
                IniWrite(@ScriptDir & "\服务器状态.ini", $pf&"盘剩余空间" , $sxdx,  $kykj)
        Next
        EndIf
        EndFunc   ;==>CurrentRAMRate

评分

参与人数 1金钱 +10 收起 理由
afan + 10

查看全部评分

发表于 2009-12-21 19:02:26 | 显示全部楼层
解决了

是变量错了
ac5474012 发表于 2009-12-21 17:13



    解决了记得修改标题分类~
 楼主| 发表于 2009-12-22 09:45:25 | 显示全部楼层
...我今天想改的,版主好敏捷!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2025-1-12 12:11 , Processed in 0.082908 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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