Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

How to realize the read and write Statistics of hard disk by VBS

2025-02-25 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)06/03 Report--

This article mainly shows you "VBS how to achieve hard disk read and write statistics", the content is easy to understand, clear, hope to help you solve your doubts, the following let the editor lead you to study and learn "VBS how to achieve hard disk read and write statistics" this article.

WinXP,Win7,Win8

The copy code is as follows:

Reprint the original content and quote the core part of the code, please indicate the source

Hard disk read and write statistics. VBS

If (Lcase (Right (Wscript.FullName,11)) = "wscript.exe") Then

CreateObject ("WScript.Shell") .Run ("% Comspec% / C" & Chr (34) & "mode con cols=52 lines=22" & "& Title hard disk read and write statistics. VBS By: FastSLZ PCEVA Or BatHome & & Cscript.exe / / NoLogo" & Chr (34) & Wscript.ScriptFullName & Chr (34) & Chr (34)), 3:Set WMI = Nothing:Wscript.Quit

End If

Dim WMI,vName,IDE,cPPP,sNow

Input = 1:InputS = Input*980

On Error Resume Next

Set WMI = GetObject ("winmgmts: {impersonationLevel=impersonate}!\\.\ root\ cimv2")

Set IDE = WMI.ExecQuery ("Select * from Win32_DiskDrive WHERE InterfaceType='IDE'")

Set cPPP = WMI.ExecQuery ("SELECT * FROM Win32_PerfRawData_PerfDisk_PhysicalDisk WHERE Name'_ Total'")

For Each oIDE In IDE

For I = 0 To IDE.Count

Select Case oIDE.Index

Case i

For Each oPPP In cPPP

If InStr (oPPP.Name, I) Then vName = oPPP.Name

Next

Select Case i

Case 0 Disk0=oIDE.Caption& "" & oIDE.FirmwareRevision:Size0=oIDE.Size:DskP0=vName

Case 1 Disk1=oIDE.Caption& "" & oIDE.FirmwareRevision:Size1=oIDE.Size:DskP1=vName

Case 2 Disk2=oIDE.Caption& "" & oIDE.FirmwareRevision:Size2=oIDE.Size:DskP2=vName

Case 3 Disk3=oIDE.Caption& "" & oIDE.FirmwareRevision:Size3=oIDE.Size:DskP3=vName

Case 4 Disk4=oIDE.Caption& "" & oIDE.FirmwareRevision:Size4=oIDE.Size:DskP4=vName

Case 5 Disk5=oIDE.Caption& "" & oIDE.FirmwareRevision:Size5=oIDE.Size:DskP5=vName

End Select

End Select

Next

Next

Set cPPP = Nothing:Set IDE= Nothing

If Disk0 "" Then WScript.Echo Left (DskP0,1) & ": & vbTab& Disk0 & vbTab _

& vbCrLf&vbTab& "Vendor capacity: & Round (Size0/1000000000) &" GB "_

& vbCrLf&vbTab& "actual capacity:" & Round (Size0/1073741824,2) & "GB" _

& vbCrLf&vbTab& "partition status:" & Right (DskP0,Len (DskP0)-2)

If Disk1 "" Then WScript.Echo Left (DskP1,1) & ": & vbTab& Disk1 & vbTab _

& vbCrLf&vbTab& "Vendor capacity: & Round (Size1/1000000000) &" GB "_

& vbCrLf&vbTab& "actual capacity:" & Round (Size1/1073741824,2) & "GB" _

& vbCrLf&vbTab& "partition status:" & Right (DskP1,Len (DskP1)-2)

If Disk2 "" Then WScript.Echo Left (DskP2,1) & ": & vbTab& Disk2 & vbTab _

& vbCrLf&vbTab& "Vendor capacity: & Round (Size2/1000000000) &" GB "_

& vbCrLf&vbTab& "actual capacity:" & Round (Size2/1073741824,2) & "GB" _

& vbCrLf&vbTab& "partition status:" & Right (DskP2,Len (DskP2)-2)

If Disk3 "" Then WScript.Echo Left (DskP3,1) & ": & vbTab& Disk3 & vbTab _

& vbCrLf&vbTab& "Vendor capacity: & Round (Size3/1000000000) &" GB "_

& vbCrLf&vbTab& "actual capacity:" & Round (Size3/1073741824,2) & "GB" _

& vbCrLf&vbTab& "partition status:" & Right (DskP3,Len (DskP3)-2)

If Disk4 "" Then WScript.Echo Left (DskP4,1) & ": & vbTab& Disk4 & vbTab _

& vbCrLf&vbTab& "Vendor capacity: & Round (Size4/1000000000) &" GB "_

& vbCrLf&vbTab& "actual capacity:" & Round (Size4/1073741824,2) & "GB" _

& vbCrLf&vbTab& "partition status:" & Right (DskP4,Len (DskP4)-2)

If Disk5 "" Then WScript.Echo Left (DskP5,1) & ": & vbTab& Disk5 & vbTab _

& vbCrLf&vbTab& "Vendor capacity: & Round (Size5/1000000000) &" GB "_

& vbCrLf&vbTab& "actual capacity:" & Round (Size5/1073741824,2) & "GB" _

& vbCrLf&vbTab& "partition status:" & Right (DskP5,Len (DskP5)-2)

WScript.Echo "↑ Please enter the number of the hard drive to be monitored and press enter"

StdInput = WScript.StdIn.Readline

StdInput=Left (UCase (stdInput), 1)

If stdInput > "5" Or stdInput

< "0" Then MsgBox "输入错误" :WScript.Quit If InStr(DskP0, stdInput) Then Call Network(Disk0,Size0,DskP0) If InStr(DskP1, stdInput) Then Call Network(Disk1,Size1,DskP1) If InStr(DskP2, stdInput) Then Call Network(Disk2,Size2,DskP2) If InStr(DskP3, stdInput) Then Call Network(Disk3,Size3,DskP3) If InStr(DskP4, stdInput) Then Call Network(Disk4,Size4,DskP4) If InStr(DskP5, stdInput) Then Call Network(Disk5,Size5,DskP5) Sub Network(Disks,Sizes,DskPs) sNow=Now Do Dim A 'WScript.Echo "已运行"&Ts\3600&"小时"&(Ts mod 3600)\60&"分钟"&(Ts mod 3600) mod 60&"秒" Set A = WMI.ExecQuery("Select * from Win32_PerfRawData_PerfDisk_PhysicalDisk Where Name='"&DskPs&"'") For Each B In A R1 = B.DiskReadBytesPersec W1 = B.DiskWriteBytesPersec If RA0 = "" Then RA0 = B.DiskReadBytesPersec Else RA1 = R1 End If If WA0 = "" Then WA0 = B.DiskWriteBytesPersec Else WA1 = W1 End If Next Set A = Nothing WScript.Sleep(InputS) Set A = WMI.ExecQuery("Select * from Win32_PerfRawData_PerfDisk_PhysicalDisk Where Name='"&DskPs&"'") For Each B In A R2 = B.DiskReadBytesPersec W2 = B.DiskWriteBytesPersec Next Set A = Nothing WScript.Echo Disks &" " &Round(Sizes/1073741824) &"GB" &vbCrLf _ &"实时读取:" & CheckSize((R2-R1)/Input) &"/s" &vbCrLf _ &"实时写人:" & CheckSize((W2-W1)/Input) &"/s"&vbCrLf _ &"脚本累计读取:" & CheckSize(RA1-RA0) &vbCrLf _ &"脚本累计写入:" & CheckSize(WA1-WA0) &vbCrLf _ &"开机累计读取:" & CheckSize(R1) &vbCrLf _ &"开机累计写入:" & CheckSize(W1) &vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf _ &"已运行"&Ts\3600&"小时"&(Ts mod 3600)\60&"分钟"&(Ts mod 3600) mod 60&"秒" Ts=DateDiff("s", sNow, Now)'Ts=TS+1 Loop End Sub Function CheckSize(SZ) On Error Resume Next If SZ =>

1073741824 Then

SZ = FormatNumber (Round (SZ/1073741824,2)) & "GB"

ElseIf SZ = > 1048576 Then

SZ = FormatNumber (Round (SZ/1048576,2)) & "MB"

ElseIf SZ = > 1024 Then

SZ = FormatNumber (Round (SZ/1024,2)) & "KB"

Else

SZ = "0" & FormatNumber (Round (SZ/1024,2)) & "KB"

End If

CheckSize=Right ("" & SZ,10)

End Function

Zone read and write statistics. VBS

The copy code is as follows:

Reprint the original content and quote the core part of the code, please indicate the source

If (Lcase (Right (Wscript.FullName,11)) = "wscript.exe") Then

CreateObject ("WScript.Shell") .Run ("% Comspec% / C" & Chr (34) & "mode con cols=52 lines=22" & "& Title partition read and write statistics. VBS By: FastSLZ PCEVA Or BatHome & & Cscript.exe / / NoLogo" & Chr (34) & Wscript.ScriptFullName & Chr (34) & Chr (34)), 3:Set WMI = Nothing:Wscript.Quit

End If

Input = 1:InputS = Input*1000

Dim WMI,vName,IDE,cPPP,sNow

On Error Resume Next

Set WMI = GetObject ("winmgmts: {impersonationLevel=impersonate}!\\.\ root\ cimv2")

Set IDE = WMI.ExecQuery ("Select * from Win32_DiskDrive WHERE InterfaceType='IDE'")

Set cPPP = WMI.ExecQuery ("SELECT * FROM Win32_PerfRawData_PerfDisk_PhysicalDisk WHERE Name'_Total'")

For Each oIDE In IDE

For I = 0 To IDE.Count

Select Case oIDE.Index

Case i

For Each oPPP In cPPP

If InStr (oPPP.Name, I) Then vName = oPPP.Name

Next

Select Case i

Case 0 Disk0=oIDE.Caption& "" & oIDE.FirmwareRevision:Size0=oIDE.Size:DskP0=vName

Case 1 Disk1=oIDE.Caption& "" & oIDE.FirmwareRevision:Size1=oIDE.Size:DskP1=vName

Case 2 Disk2=oIDE.Caption& "" & oIDE.FirmwareRevision:Size2=oIDE.Size:DskP2=vName

Case 3 Disk3=oIDE.Caption& "" & oIDE.FirmwareRevision:Size3=oIDE.Size:DskP3=vName

Case 4 Disk4=oIDE.Caption& "" & oIDE.FirmwareRevision:Size4=oIDE.Size:DskP4=vName

Case 5 Disk5=oIDE.Caption& "" & oIDE.FirmwareRevision:Size5=oIDE.Size:DskP5=vName

End Select

End Select

Next

Next

Set cPPP = Nothing:Set IDE= Nothing

If Disk0 "" Then DskP=Right (DskP0,Len (DskP0)-2): WScript.Echo Left (DskP0,1) & ": & vbTab& Disk0 & vbTab _

& vbCrLf&vbTab& "partition status:" & Right (DskP0,Len (DskP0)-2)

If Disk1 "" Then DskP=DskP& "& Right (DskP1,Len (DskP1)-2): WScript.Echo Left (DskP1,1) &": & vbTab& Disk1 & vbTab _

& vbCrLf&vbTab& "partition status:" & Right (DskP1,Len (DskP1)-2)

If Disk2 "" Then DskP=DskP& "& Right (DskP2,Len (DskP2)-2): WScript.Echo Left (DskP2,1) &": & vbTab& Disk2 & vbTab _

& vbCrLf&vbTab& "partition status:" & Right (DskP2,Len (DskP2)-2)

If Disk3 "" Then DskP=DskP& "& Right (DskP3,Len (DskP3)-2): WScript.Echo Left (DskP3,1) &": & vbTab& Disk3 & vbTab _

& vbCrLf&vbTab& "partition status:" & Right (DskP3,Len (DskP3)-2)

If Disk4 "" Then DskP=DskP& "& Right (DskP4,Len (DskP4)-2): WScript.Echo Left (DskP4,1) &": & vbTab& Disk4 & vbTab _

& vbCrLf&vbTab& "partition status:" & Right (DskP4,Len (DskP4)-2)

If Disk5 "" Then DskP=DskP& "& Right (DskP5,Len (DskP5)-2): WScript.Echo Left (DskP5,1) &": & vbTab& Disk5 & vbTab _

& vbCrLf&vbTab& "partition status:" & Right (DskP5,Len (DskP5)-2)

WScript.Echo vbCrLf& "Please enter any drive letter in" & DskP& "

StdInput = WScript.StdIn.Readline

StdInput=Left (UCase (stdInput), 1)

If InStr (DskP,stdInput) Then Call Network (stdInput& ":)

Sub Network (DskPs)

SNow=Now

Do

Dim A

Set A = WMI.ExecQuery ("Select * from Win32_PerfRawData_PerfDisk_LogicalDisk Where Name ='" & DskPs & "'")

For Each B In A

R1 = B.DiskReadBytesPersec

W1 = B.DiskWriteBytesPersec

If RA0 = "" Then RA0 = B.DiskReadBytesPersec Else RA1 = R1 End If

If WA0 = "" Then WA0 = B.DiskWriteBytesPersec Else WA1 = W1 End If

Next

Set A = Nothing

WScript.Sleep (InputS)

Set A = WMI.ExecQuery ("Select * from Win32_PerfRawData_PerfDisk_LogicalDisk Where Name ='" & DskPs & "'")

For Each B In A

R2 = B.DiskReadBytesPersec

W2 = B.DiskWriteBytesPersec

Next

Set A = Nothing

WScript.Echo "Monitoring Zone:" & DskPs & vbCrLf _

& "Real-time read:" & CheckSize ((R2-R1) / Input) & "/ s" & vbCrLf _

& "Real-time writer:" & CheckSize ((W2-W1) / Input) & "/ s" & vbCrLf _

& "script cumulative reads:" & CheckSize (RA1-RA0) & vbCrLf _

& "script cumulative writes:" & CheckSize (WA1-WA0) & vbCrLf _

& "boot cumulative read:" & CheckSize (R1) & vbCrLf _

& "boot cumulative write:" & CheckSize (W1) & vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf&vbCrLf _

& run & Ts\ 3600 & hours & (Ts mod 3600)\ 60 & minutes & (Ts mod 3600) mod 60 & seconds

Ts=DateDiff ("s", sNow, Now) 'Ts=TS+1

Loop

End Sub

Function CheckSize (SZ)

On Error Resume Next

If SZ = > 1073741824 Then

SZ = FormatNumber (Round (SZ/1073741824,2)) & "GB"

ElseIf SZ = > 1048576 Then

SZ = FormatNumber (Round (SZ/1048576,2)) & "MB"

ElseIf SZ = > 1024 Then

SZ = FormatNumber (Round (SZ/1024,2)) & "KB"

Else

SZ = "0" & FormatNumber (Round (SZ/1024,2)) & "KB"

End If

CheckSize=Right ("" & SZ,10)

End Function

The above is all the contents of the article "how to achieve hard disk read and write Statistics by VBS". Thank you for reading! I believe we all have a certain understanding, hope to share the content to help you, if you want to learn more knowledge, welcome to follow the industry information channel!

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report