Что нового

[Данные, строки] Drive Size

FlatX007

Tattoo!
Сообщения
197
Репутация
35
Скрипт пример, показывает сколько осталось свободного места на дисках компьютера (писалось от нечего делать) :beer:

Код:
Dim $sDrive[26] = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'V', 'X', 'Y', 'Z']

ProgressOn("Drive Size", "", "", @DesktopWidth - 350, @DesktopHeight - @DesktopHeight + 50, 16 + 2)

While 1
	For $i = 0 To UBound($sDrive) - 1
		If DriveSpaceTotal($sDrive[$i] & ':\') = 0 Then
			ContinueLoop
		Else
			Sleep(3000)
		EndIf
		$iSize = DriveSpaceTotal ($sDrive[$i] & ':\')
		$iOst = DriveSpaceFree ($sDrive[$i] & ':\')
		ProgressSet(100 / $iSize * ($iSize - $iOst), ' Заполнено : ' & _BytesToFullSize($iSize * 1024 * 1024 - $iOst * 1024 * 1024) & "  Всего : " &  _BytesToFullSize($iSize * 1024 * 1024), 'Диск : " ' & $sDrive[$i] & ':\ "' & ' Осталось : ' & _BytesToFullSize($iOst * 1024 * 1024))
	Next

WEnd

ProgressOff()


Func _BytesToFullSize($iByteSize, $iRound=2, $sRetFormat=-1) ; Спёр где то =)
	Local $asBytes[9] = [8, 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
	Local $iBytes_Val = 2 ^ 10

	If $iByteSize < $iBytes_Val Then Return $iByteSize & ' Bytes'

	If IsString($sRetFormat) Then
		For $i = 1 To 8
			If $sRetFormat = $asBytes[$i] Then Return Round($iByteSize / $iBytes_Val ^ $i, $iRound) & ' ' & $asBytes[$i]
		Next
	Else
		For $i = 8 To 1 Step -1
			If $iByteSize >= $iBytes_Val ^ $i Then Return Round($iByteSize / $iBytes_Val ^ $i, $iRound) & ' ' & $asBytes[$i]
		Next
	EndIf
EndFunc
 
Верх