cyberkey
Goto Top

Kleines Script in VBS erzeugen das bei freiem Speicher ein Programm ausführt

Habe leider nicht so viele Kenntnisse auf dem Gebiet.

Hallo,

wollte ein kleines Script schreiben das den freien Festplattenspeicher z.B. von C ausliest.
Dann soll der Wert als Variable übernommen werden. Mit einer IF Variable >500MB Then goto 1 Else goto 2
1:
Start Programm1
End sub
2:
'Nichts tun
End sub

Dieses Script kommt dann in den Autostart und soll z.b. Updates verhindern wenn kein freier Speicher mehr Frei ist.

Kennt sich da vll. jemand besser aus?

Content-ID: 138686

Url: https://administrator.de/contentid/138686

Ausgedruckt am: 23.11.2024 um 00:11 Uhr

bstefan82
bstefan82 19.03.2010 um 17:24:36 Uhr
Goto Top
hier mal nen copy&paste von eines meiner login scripte:

on error resume next
dim minFreeSpace
minFreeSpace = 1765
dim fsoObject, sysdrv

    haveEnoughFreeSpace = false
    strComputer = "."   
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")   
    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_LogicalDisk",,48)   
    set fsoObject = WScript.CreateObject("Scripting.FileSystemObject")  
    set sysDrv = fsoObject.GetDrive(fsoObject.GetDriveName("c:"))  
        For Each objItem in colItems
    if (objItem.Name = sysDrv) then
        'if (objItem.DriveType = 3) then  
            'WScript.echo "Drive " & objItem.Caption & " free space: " & FormatNumber(objItem.FreeSpace/(1024^2), 0,0,0,0) & "MB"  
            if (objItem.FreeSpace/(1024^2) > minFreeSpace) then
                haveEnoughFreeSpace = true
             else
		freespaceleft = round(objItem.FreeSpace/(1024^2),0)
	    end if
    end if
    Next
        
    if (haveEnoughFreeSpace = false) then
	if SendWarnMsg(freespaceleft ) = false then
        msgTxt = " *** Warnung ***" & chr(13)  
        msgTxt = msgTxt & " Auf dem Systemlaufwerk befindet sich zuwenig freier Speicher. " & chr(13)  
        msgTxt = msgTxt & " Dies kann zu Fehlverhalten und Abstürzen führen. Bitte unter " & chr(13)  
 	msgTxt = msgTxt & " XXXXXXXXXXXXX anrufen, damit der Fehler behoben werden kann. "  
        Msgbox msgTxt , 16, "Systemlaufwerk voll"  
        end if
        WScript.Quit(1)
    end if
    
    WScript.Quit (0)

function SendWarnMsg(fspace)
on error resume next
set objNetwork = CreateObject("WScript.Network")  

strComputerName = objNetwork.Computername

Set objEmail = CreateObject("CDO.Message")  
objEmail.From = "PCHEALTH@xxx.xx"  
objEmail.To = "xxx@xxx.xx"  
objEmail.Subject = strComputerName & " - Systemlaufwerk voll"   
objEmail.Textbody = "Restkapazität des Systemlaufwerks auf " & strComputerName  & " unter Schwellenwert. Verfügbar: " & fspace  
objEmail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2  
objEmail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _  
        "xxx.xxx.locall"   
objEmail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25  
objEmail.Configuration.Fields.Update
objEmail.Send
if err then
	SendWarnMsg = false
 else
	SendWarnMsg = true
end if
end function
76109
76109 19.03.2010 um 18:03:54 Uhr
Goto Top
Hallo Cyberkey!

Oder so:
Const Programm = """C:\Windows\Notepad.Exe"""    'Leerzeichen im Pfad erlaubt  
   
Set Fso = CreateObject("Scripting.FileSystemObject")  
Set WshShell = CreateObject("WScript.Shell")  
   
If Round(Fso.GetDrive("C").FreeSpace / (1024^2), 0)  > 500 Then  WshShell.Run Programm, 1, False    'Size in MB  

Gruß Dieter
Cyberkey
Cyberkey 19.03.2010 um 18:51:17 Uhr
Goto Top
Danke.. es Funktioniert jetzt...
@bstefan82 .. vll. kann ich mir von deinem noch was abgucken für ev. erweiterungen =)