13. juli 2004 - 12:57Der er
18 kommentarer og 1 løsning
Finde størelsen på et Bibliotek
Hej,
Jeg kunne godt tænke at finde ud af meget et bibliotek fylder?
Folderen hvor programemt skal tjekke størelsen findes under system.ini Og hvis størelsen er større end en værdi som skal angives en system.ini fil, som skal indlæses ved opstart af programmet... Hvis der overskrider den tilladte størelse så skal der komme en MSGBOX hvor teksten fra Warning fremtræder...
Indholdet af denne fil er som følger:
# Userprofile Profile-Folder="M:\Userdata\Profile" Max-Size="50MB" Warning="Bla Bla bla....."
Private Sub Command1_Click() 'kræver ref. til Microsoft scripting Runtime
Profile_Folder = "C:\data" Dim fs, f, s, Brugt As Long, Bem As String Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(Profile_Folder)
If f.Size > 1024 Then Brugt = (f.Size / 1024): Bem = " kb" If Brugt > 1024 Then Brugt = (Brugt / 1024): Bem = " MB" If Brugt > 1024 Then Brugt = (Brugt / 1024): Bem = " GB"
s = UCase(Profile_Folder) & " indeholder " & Brugt & Bem MsgBox s, 0, "Folder Size Info"
Det er kanont, det eneste jeg ikke lige forstår at de linier er ens: If Brugt > 1024 Then Brugt = (Brugt / 1024): Bem = " MB" If Brugt > 1024 Then Brugt = (Brugt / 1024): Bem = " GB"
Den eneste forskel er at i den ene linie står der MB og den anden står der GB...
Det sidste jeg mangler at hvis at mappe størelsen er over fx 75 MB så kommer der en MSGBOX med en advarsel, ellers kommer der ingen ting...
Private Sub Command1_Click() 'kræver ref. til Microsoft scripting Runtime Dim fs, f, s, Brugt As Variant, Bem As String, MaksStørrelse As Long MaksStørrelse = 75 ' din maks størrelse i MB Profile_Folder = "C:\" ' dit drev
Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(Profile_Folder) Brugt = f.Size: Bem = " bytes" ' størrelse under 1 Kb If f.Size > 1024 Then Brugt = (Brugt / 1024): Bem = " kb" ' størrelse under 1 MB If Brugt > 1024 Then ' størrelse under 1 GB Brugt = (Brugt / 1024) Bem = " MB" If Brugt > MaksStørrelse Then MsgBox "Der er brugt " & Format(Brugt, "#.#0") & " " & Bem & " og maksimum er " & MaksStørrelse & Bem Exit Sub End If End If 'nedenstående linie får du ikke brug for
If Brugt > 1024 Then Brugt = (Brugt / 1024): Bem = " GB" ' størrelse over 1 GB
'denne bruges hvis du ikke overskrider maks størrelsen s = UCase(Profile_Folder) & " indeholder " & Format(Brugt, "#.#0") & Bem MsgBox s, 0, "Folder Size Info"
Når jeg kører programmet, hvis størelsen på Mappen er større end de tilladte 75 MB, så kommer der ingen advarsel, er størelsen mindre siger programmet at man overskrider den tilladte størelse...
Derudover hvis størelse på mappen er over 1024 Mb så oversætter programmet det ikke det til GB....
Private Sub Command1_Click() 'kræver ref. til Microsoft scripting Runtime Dim fs, f, s, Brugt As Variant, Bem As String, MaksStørrelse As Long MaksStørrelse = 75 ' din maks størrelse i MB Profile_Folder = "C:\data" ' dit drev
Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(Profile_Folder) Brugt = f.Size: Bem = " bytes" ' størrelse under 1 Kb If f.Size > 1024 Then Brugt = (Brugt / 1024): Bem = " kb" ' størrelse under 1 MB If Brugt > 1024 Then ' størrelse under 1 GB Brugt = (Brugt / 1024): Bem = " MB" If Brugt > MaksStørrelse Then If Brugt > 1024 Then Brugt = (Brugt / 1024): Bem = " GB" MsgBox "I Biblioteket( " & UCase(Profile_Folder) & " )" & vbCrLf _ & "er der brugt " & Format(Brugt, "#.#0") & " " & Bem _ & " og maksimum er " & MaksStørrelse & " MB", , "Advarsel" Exit Sub End If End If
'denne bruges hvis du ikke overskrider maks størrelsen s = UCase(Profile_Folder) & " indeholder " & Format(Brugt, "#.#0") & Bem MsgBox s, 0, "Folder Size Info"
End Sub
Nu oversætter den til GB, den anden fejl får jeg ikke
Dim fs, f, s, Brugt As Variant, Bem As String, MaxStørrelse As Long
MaxStørrelse = 75 ProfileFolder = "C:\userdata" Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(ProfileFolder)
Brugt = f.Size: Bem = " bytes" If f.Size > 1024 Then Brugt = (Brugt / 1024): Bem = " kb" If Brugt > 1024 Then Brugt = (Brugt / 1024): Bem = " MB"
If Brugt > MaxStørrelse Then
If Brugt > 1024 Then Brugt = (Brugt / 1024): Bem = " GB" MsgBox "Din profil overskrider den tilladte størelse " & MaxStørrelse & Bem & " ! Din profil flyder pt. " & Brugt & Bem Exit Sub End If End If
'denne bruges hvis du ikke overskrider maks størrelsen s = UCase(Profile_Folder) & " indeholder " & Format(Brugt, "#.#0") & Bem MsgBox s, 0, "Folder Size Info"
Det eneste problem der er tilbage er hvis mappen størelse er i GB så skrives Brugt med GB, MB, KB og Bytes... Vil gerne ha det rundet af til bare GB...
Vil også gerne kunne angive om Max værdien er i MB, GB eller Kb...
Når det er løst så har jeg vist ikke flere problemer...
Private Sub Command1_Click() 'kræver ref. til Microsoft scripting Runtime Dim fs, f, s, Brugt As Variant, Bem As String, MaksStørrelse As Long, Art As String, ST As Boolean ST = False MaksStørrelse = 1 ' din maks størrelse Art = "MB" 'bytes,kb,MB eller GB Profile_Folder = "C:\userdata" ' dit drev Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(Profile_Folder) Brugt = f.Size Select Case UCase(Art) Case "BYTES" Bem = " bytes" If Brugt > MaksStørrelse Then ST = True Case "KB" Bem = " kb" Brugt = (Brugt / 1024) If Brugt > MaksStørrelse Then ST = True Case "MB" Bem = " MB" Brugt = ((Brugt / 1024) / 1024) If Brugt > MaksStørrelse Then ST = True Case "GB" Bem = " GB" Brugt = (((Brugt / 1024) / 1024) / 1024) If Brugt > MaksStørrelse Then ST = True Case Else MsgBox " Du har ikke valg en korrekt betegnelse for Art" End Select Ialt = (((f.Size / 1024) / 1024) / 1024) If ST = True Then MsgBox "I Biblioteket( " & UCase(Profile_Folder) & " )" & vbCrLf _ & "er der brugt " & Format(Ialt, "0#.###0") & " GB" _ & " og maksimum er " & MaksStørrelse & " " & Art, , "Advarsel" Exit Sub
End If
'denne bruges hvis du ikke overskrider maks størrelsen s = UCase(Profile_Folder) & " indeholder " & Format(Ialt, "0#.###0") & " GB" MsgBox s, 0, "Folder Size Info"
Jeg har lige testet din kode... enten om man har overskredet MAXværdien eller ikke så kommer den og siger at det er i GB, derudover så er Brugt = XX.XXXX, jeg vil gerne bare have at jeg har et lige tal, altså som 2 GB, 100 MB, 50 Kb eller andet...
End Select If ST = True Then MsgBox "I Biblioteket( " & UCase(Profile_Folder) & " )" & vbCrLf _ & "er der brugt " & Format(Brugt, "0#") & Bem _ & " og maksimum er " & MaksStørrelse & " " & Art, , "Advarsel" Exit Sub
End If
'denne bruges hvis du ikke overskrider maks størrelsen s = UCase(Profile_Folder) & " indeholder " & Format(Brugt, "0#") & Bem MsgBox s, 0, "Folder Size Info"
Det er kanont, det virker jo som det skal nu, det eneste som jeg kan se er at den ikke regner om til GB men benytter MB.... Fx du har en mappe som er på 2144 MB, det fortæller programmet at mappen er på 2144 MB, det er OK, hvis det ikke kan rettes til at vise 2 GB....
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.