Kix -> Byte in Megabyte umwandeln
SMHAMK1985 (Level 1) - Jetzt verbinden
19.06.2006, aktualisiert 13.07.2006, 6025 Aufrufe, 9 Kommentare
Hallo,
ich lese mit hilfe von Kix den Freien Festplattenplatz aus. Es wird in Byte wiedergegeben. Gäbe es vielleicht die möglichkeit die in Megabyte umwandelns zulassen?
Hier das Code:
$strComputer = "."
$objWMIService = GetObject("winmgmts:\\"+ $strComputer + "\root\cimv2")
$colItems = $objWMIService.ExecQuery("Select * from Win32_LogicalDisk")
For Each $objItem in $colItems
? "Laufwerk: " + $objItem.Caption
? "Dateisystem: " + $objItem.FileSystem
? "HDD Freier Specher: " + $objItem.FreeSpace + " Byte"
?;;
Next
? "Size: " + $objItem.Size
? "Volume Serial Number: " + $objItem.VolumeSerialNumber
Danke für eure Hilfe
MfG
ich lese mit hilfe von Kix den Freien Festplattenplatz aus. Es wird in Byte wiedergegeben. Gäbe es vielleicht die möglichkeit die in Megabyte umwandelns zulassen?
Hier das Code:
$strComputer = "."
$objWMIService = GetObject("winmgmts:\\"+ $strComputer + "\root\cimv2")
$colItems = $objWMIService.ExecQuery("Select * from Win32_LogicalDisk")
For Each $objItem in $colItems
? "Laufwerk: " + $objItem.Caption
? "Dateisystem: " + $objItem.FileSystem
? "HDD Freier Specher: " + $objItem.FreeSpace + " Byte"
?;;
Next
? "Size: " + $objItem.Size
? "Volume Serial Number: " + $objItem.VolumeSerialNumber
Danke für eure Hilfe
MfG
9 Antworten
- LÖSUNG Dani schreibt am 19.06.2006 um 09:04:19 Uhr
- LÖSUNG SMHAMK1985 schreibt am 19.06.2006 um 09:14:17 Uhr
- LÖSUNG Dani schreibt am 19.06.2006 um 09:20:39 Uhr
- LÖSUNG SMHAMK1985 schreibt am 19.06.2006 um 09:49:52 Uhr
- LÖSUNG Dani schreibt am 19.06.2006 um 09:20:39 Uhr
- LÖSUNG Leibeigener schreibt am 19.06.2006 um 09:16:28 Uhr
- LÖSUNG Biber schreibt am 19.06.2006 um 10:28:48 Uhr
- LÖSUNG superboh schreibt am 11.07.2006 um 02:23:00 Uhr
- LÖSUNG Biber schreibt am 11.07.2006 um 09:32:35 Uhr
- LÖSUNG JJKix schreibt am 13.07.2006 um 16:34:25 Uhr
- LÖSUNG Biber schreibt am 11.07.2006 um 09:32:35 Uhr
- LÖSUNG superboh schreibt am 11.07.2006 um 02:23:00 Uhr
- LÖSUNG Biber schreibt am 19.06.2006 um 10:28:48 Uhr
- LÖSUNG SMHAMK1985 schreibt am 19.06.2006 um 09:14:17 Uhr
LÖSUNG 19.06.2006 um 09:04 Uhr
LÖSUNG 19.06.2006 um 09:14 Uhr
LÖSUNG 19.06.2006 um 09:16 Uhr
LÖSUNG 19.06.2006 um 09:20 Uhr
LÖSUNG 19.06.2006 um 09:49 Uhr
LÖSUNG 19.06.2006 um 10:28 Uhr
Anmerkung:
Schon richtig, Dani,
aber auch KiX kann IMHO nur mit Zahlen bis 2 hoch 32 -1 "richtig" rechnen, also bis 2.147.483.647 = (fast) 2048 MegaByte.
Das heißt, wenn die Platte/der freie Plattenplatz größer ist als 2 GByte, dann wird es schwierig mit der Division.
Als "Byte-Wert" wird $objItem.FreeSpace richtig angezeigt... aber eben als String behandelt. Bei einer Division käme ein negativer Wert oder 0.
Grüße
Biber
Schon richtig, Dani,
aber auch KiX kann IMHO nur mit Zahlen bis 2 hoch 32 -1 "richtig" rechnen, also bis 2.147.483.647 = (fast) 2048 MegaByte.
Das heißt, wenn die Platte/der freie Plattenplatz größer ist als 2 GByte, dann wird es schwierig mit der Division.
Als "Byte-Wert" wird $objItem.FreeSpace richtig angezeigt... aber eben als String behandelt. Bei einer Division käme ein negativer Wert oder 0.
Grüße
Biber
LÖSUNG 11.07.2006 um 02:23 Uhr
aber auch KiX kann IMHO nur mit Zahlen bis 2 hoch 32 -1 "richtig" rechnen, also
bis 2.147.483.647 = (fast) 2048 MegaByte.
Das heißt, wenn die Platte/der freie Plattenplatz größer ist als 2 GByte,
dann wird es schwierig mit der Division.
bis 2.147.483.647 = (fast) 2048 MegaByte.
Das heißt, wenn die Platte/der freie Plattenplatz größer ist als 2 GByte,
dann wird es schwierig mit der Division.
@Biber:
Ja das stimmt mit den 2.147.483.647, das steht so auch in der Doku zu Kix.
Allerdings ... was ich nicht verstehe ... ich ermittle die Grösse der Homeverzeichnisse mit Kix und meines ist momentan 3.663.056.936 (3,41 GB) gross. Genau diesen Wert in Bytes zeigt mir auch der Eigenschafts-Dialog von Windows an.
Hier jetzt das Kix-Schnippsel:
? "ungerundet: "(GetFolderSize(H:)/1024/1024)
? "gerundet: "Round((GetFolderSize(H:)/1024/1024),2)
Function GetFolderSize($path)
Dim $fso, $fold
$GetFolderSize = -3
If Exist($path) = 1
$FSO = CreateObject("scripting.filesystemobject")
$fold = $fso.getfolder($path)
$GetFolderSize = $fold.size
Exit(0)
Else
Exit(3)
EndIf
EndFunction
ungerundet: 3493,36331939697
gerundet: 3493,36
Steh ich komplett auf dem Schlauch oder wo ist der Denkfehler? Weil ich habe ja mehr als 2 GByte und kann richtig damit rechnen.gerundet: 3493,36
Gruß,
Thomas
LÖSUNG 11.07.2006 um 09:32 Uhr
@superboh
...verblüfft mich jetzt auch..hätte ich nicht erwartet.
Unterm CMD-Prompt (den ich ja -wie bekannt- immer griffbereit habe) kommt erwartungsgemäß Bullshit raus.
...hätte jetzt bei KiX auch nicht mehr erwartet.
Muss ich wohl noch mal recherchieren....
(To be cont'd)
Biber
...verblüfft mich jetzt auch..hätte ich nicht erwartet.
Unterm CMD-Prompt (den ich ja -wie bekannt- immer griffbereit habe) kommt erwartungsgemäß Bullshit raus.
(= 9:27:08 D:\temp=)
>set /a 3493*1024
3576832
(= 9:27:14 D:\temp=)
>set /a 3493*1024*1024
-632291328
(= 9:31:04 D:\temp=)
>
Muss ich wohl noch mal recherchieren....
(To be cont'd)
Biber
LÖSUNG 13.07.2006 um 16:34 Uhr
Hi,
hier noch eine Variante mit Division:
Vor der Division muss der Wert zum Double gecastet werden CDbl (nicht unbedingt, aber schöner, danach diesen zum String-Wert casten mit CStr)
; break on
$strComputer = "."
$objWMIService = GetObject("winmgmts:\\"+ $strComputer + "\root\cimv2")
$colItems = $objWMIService.ExecQuery("Select * from Win32_LogicalDisk")
For Each $objItem in $colItems
? "Laufwerk: " + $objItem.Caption
? "Dateisystem: " + $objItem.FileSystem
? "HDD Freier Specher: " + $objItem.FreeSpace + " Byte" + " -----> " + cstr(cDbl($objItem.FreeSpace)/1024/1024) + " GigaByte"
?;;
? "Size: " + $objItem.Size
? "Volume Serial Number: " + $objItem.VolumeSerialNumber
Next
hier noch eine Variante mit Division:
Vor der Division muss der Wert zum Double gecastet werden CDbl (nicht unbedingt, aber schöner, danach diesen zum String-Wert casten mit CStr)
; break on
$strComputer = "."
$objWMIService = GetObject("winmgmts:\\"+ $strComputer + "\root\cimv2")
$colItems = $objWMIService.ExecQuery("Select * from Win32_LogicalDisk")
For Each $objItem in $colItems
? "Laufwerk: " + $objItem.Caption
? "Dateisystem: " + $objItem.FileSystem
? "HDD Freier Specher: " + $objItem.FreeSpace + " Byte" + " -----> " + cstr(cDbl($objItem.FreeSpace)/1024/1024) + " GigaByte"
?;;
? "Size: " + $objItem.Size
? "Volume Serial Number: " + $objItem.VolumeSerialNumber
Next