时间:2021-05-22
WinXP,Win7,Win8
复制代码 代码如下:
'原创内容转载、引用代码核心部分请注明出处
硬盘读写统计.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 硬盘读写统计.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&"厂商容量:"&Round(Size0/1000000000) &"GB" _
&vbCrLf&vbTab&"实际容量:"&Round(Size0/1073741824,2) &"GB" _
&vbCrLf&vbTab&"分区状态:"&Right(DskP0,Len(DskP0)-2)
If Disk1 <> "" Then WScript.Echo Left(DskP1,1)&":"&vbTab& Disk1 &vbTab _
&vbCrLf&vbTab&"厂商容量:"&Round(Size1/1000000000) &"GB" _
&vbCrLf&vbTab&"实际容量:"&Round(Size1/1073741824,2) &"GB" _
&vbCrLf&vbTab&"分区状态:"&Right(DskP1,Len(DskP1)-2)
If Disk2 <> "" Then WScript.Echo Left(DskP2,1)&":"&vbTab& Disk2 &vbTab _
&vbCrLf&vbTab&"厂商容量:"&Round(Size2/1000000000) &"GB" _
&vbCrLf&vbTab&"实际容量:"&Round(Size2/1073741824,2) &"GB" _
&vbCrLf&vbTab&"分区状态:"&Right(DskP2,Len(DskP2)-2)
If Disk3 <> "" Then WScript.Echo Left(DskP3,1)&":"&vbTab& Disk3 &vbTab _
&vbCrLf&vbTab&"厂商容量:"&Round(Size3/1000000000) &"GB" _
&vbCrLf&vbTab&"实际容量:"&Round(Size3/1073741824,2) &"GB" _
&vbCrLf&vbTab&"分区状态:"&Right(DskP3,Len(DskP3)-2)
If Disk4 <> "" Then WScript.Echo Left(DskP4,1)&":"&vbTab& Disk4 &vbTab _
&vbCrLf&vbTab&"厂商容量:"&Round(Size4/1000000000) &"GB" _
&vbCrLf&vbTab&"实际容量:"&Round(Size4/1073741824,2) &"GB" _
&vbCrLf&vbTab&"分区状态:"&Right(DskP4,Len(DskP4)-2)
If Disk5 <> "" Then WScript.Echo Left(DskP5,1)&":"&vbTab& Disk5 &vbTab _
&vbCrLf&vbTab&"厂商容量:"&Round(Size5/1000000000) &"GB" _
&vbCrLf&vbTab&"实际容量:"&Round(Size5/1073741824,2) &"GB" _
&vbCrLf&vbTab&"分区状态:"&Right(DskP5,Len(DskP5)-2)
WScript.Echo "↑请输入要监控的硬盘编号,并按回车键"
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
分区读写统计.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 分区读写统计.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&"分区状态:"&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&"分区状态:"&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&"分区状态:"&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&"分区状态:"&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&"分区状态:"&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&"分区状态:"&Right(DskP5,Len(DskP5)-2)
WScript.Echo vbCrLf&"请输入"&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 "监控分区:" &DskPs &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
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
硬盘的结构及硬盘分区 由于磁盘的读写操作是机械操作(磁盘的旋转和磁头驱动臂带动磁头的移动),所以磁盘的读写速度与内存的读写速度相比,就太慢了(一般慢100
了解SSD的朋友都知道,4K对齐是固态硬盘分区时非常重要的一项操作,如果SSD没有4K对齐,会造成跨区读写,不仅影响固态硬盘速度,还会影响SSD寿命。那么,固态
机械硬盘在读写数据时都会发出吱吱声,这是由机械硬盘本身工作原理决定的,是正常现象。 机械硬盘在读写数据时,硬盘的磁头会在音圈电机的驱动下来回移动寻找磁道,这个
文件的读写是.net中常用的功能,本文即以实例形式展示.net实现文件读写的几种常用方法,供大家参考之用。具体如下:在.net中有很多有用的类库来读写硬盘上的文
硬盘与机械硬盘的区别SLC只有10万次的读写寿命,成本低廉的MLC,读写寿命仅有1万次,比起传统硬盘毫无优势可言。另外有一点很重要的是,固态硬盘内部都是使用闪存