Jump to content

Defrag per Script unter XP


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Ich sag mal... WOW... äh, gut, Hauptsache es läuft ;)

 

Gibts denn immer C, D und E? Defrag auf ne Platte, die es nicht gibt, könnte nen Fehler erzeugen ;)

Ich würde vorschlagen, noch ein wenig Fehlerabfangroutinen einzubauen, sowie den Defrag-Teil in eine Sub bzw. Function auszulagern, damit man den Code nur einmal hat aber 3x laufen lassen kann (zwecks Programmpflege einfach besser!)

 

Bis morgen kann ich Dir ggf. das auch ein bissle aufräumen ;)

Link zu diesem Kommentar

So, hier Dein bissle überarbeiteter Code:

Set WSHShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
temp = fso.GetSpecialFolder(2).Path
FullFileName = temp & "\defrag.txt"

flgstart = false
if fso.FileExists(FullFileName) then
 if MsgBox("Script läuft bereits oder wurde abnormal beendet!" & chr(13) & "Script dennoch laufen lassen?", vbyesno) = vbyes then flgStart = true
else
 flgstart = true
end if

if flgstart then
 strComputer = "."

 'Abfrage der Zeit Datum
 Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
 Set colItems = objWMIService.ExecQuery("Select * from Win32_LocalTime")
 For Each objItem in colItems
   'Die Variablen dazu
   dim day              
   dim week
   dim hour
   dim minute
   dim month
   dim quarter
   dim second
   dim weekinmonth
   dim year

   'Gesetzte Variablen
   day = objItem.Day
   week = objItem.DayOfWeek
   hour = objItem.Hour
   minute = objItem.Minute
   month = objItem.Month
   quarter = objItem.Quarter
   second = objItem.Second
   weekinmonth = objItem.WeekInMonth
   year = objItem.Year
 next
 'Ende der Zeit und Datum Abfrage

 'Abfrage der Variable CSV-System
 Set objWMIService = GetObject("winmgmts:" _
   & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
 Set colItems = objWMIService.ExecQuery("Select * from Win32_Environment")
 For Each objItem in colItems
   'Variablen setzen
   dim systemname
   dim csv

   systemname = objItem.Name
   If systemname = "CSVSystem" then csv = objItem.VariableValue
 next
 'Ende der Variablen Auslesen

 'Anfang der Hostabfrage
 Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
 Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem",,48)
 For Each objItem in colItems
   'Variablen setzen
   dim computername
   dim strErgebnisc
   dim strErgebnisd
   dim strErgebnise
   dim sql

   'Domäne: DNSHostname, sonst Name
   on error resume next
   computername = objItem.DNSHostName
   if err > 0 then computername = objItem.Name
   on error goto 0
   'Ende der Hostabfrage

   'Defrag Analyse von C: Laufwerk
   strErgebnisc = DefragLW("C:")
   'Defrag Analyse von D: Laufwerk
   strErgebnisd = DefragLW("D:")
   'Defrag Analyse von E: Laufwerk
   strErgebnise = DefragLW("E:")

   'Ausführen der SQL Befehle und schreiben in die Spalten
   set db = CreateObject("ADODB.Connection")
   db.Open("Provider=SQLOLEDB.1;Data Source=server; Trusted_Connection=Yes;Initial Catalog=wartung;User ID=sa;Password=xxxx;")
   sql = "use wartung;"
   db.Execute(sql)

   sql = "insert into wartung (day, year, dayofweek, hour, minute, month, quarter, second, weekinmonth, computername, csv,cdefrag,ddefrag,edefrag)"
   sql = sql & "values ('" & day & "','" & year & "','" & week & "','" & hour & "','" & minute & "','" & month & _
"','" & quarter & "','" & second & "','" & weekinmonth & "','" & computername & "','" & csv & "','" & _
strErgebnisc & "','" & strErgebnisd & "','" & strErgebnise & "');"
   db.Execute(sql)
   db.close
 Next
 fso.GetFile(FullFileName).Delete
End if
Set fso = Nothing


'-------------------------
Function DefragLW(strLW)
 dim strErgebnis
 dim return

 strergebnis = ""
 return = WshShell.run("cmd.exe /C DEFRAG.EXE " & strLW & " -a > " & FullFileName, 0, true)    
 if return = 0 then
   Set file = fso.OpenTextFile(FullFileName)
   strErgebnis = file.readAll
   If Instr(strErgebnis, "You should defragment this volume") > 0 or _
Instr(strErgebnis, "Das Volume sollte defragmentiert werden") >0 then DefragLW = "Ja" Else DefragLW = "Nein"
   file.Close
   Set file = Nothing
 else
   DefragLW = "Defrag FehlerID " & return
 end if

End Function

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...