Kleiner Kundendienst für's System

Das Problem

Von Zeit zu Zeit sollte man ein Backup seiner Daten anfertigen und möglichst nicht auf der gleichen Festplatte speichern. Daneben wäre es auch wünschenswert, überflüssige Dateien zu löschen und die Festplatte mit Scandisk und Defrag zu bearbeiten.

Das folgende Skript führt alle Aufgaben durch, wobei es erweiterungs- und anpassungsfähig ist.

Bevor man Scandisk aus dem Skript heraus aufruft, sollte man es manuell starten und die wichtigsten Einstellungen vornehmen. Besonders wichtig ist dabei, dass die Option 'Zusammenfassung anzeigen' im Menü 'erweiterte Optionen' nicht auf 'Immer' steht, da sonst das Skript auch bei erfolgreicher Arbeit angehalten wird.

Weitere Hinweise:

  • Die Programnme benötigen zum Löschen toter Links eines meiner Unterprogramme.

  • Als Packprogramm wird der Powerarchiver vorausgesetzt, aber mit einigen Handriffen kann man auch WinZip und WinRAR einsetzen.

Inhalt der VBS-Datei ‘Service.VBS’ für Win 9x
  ' Unnötige Dateien löschen ...

  EntferneDatei "C:\Windows\Temp\*.tmp"
  EntferneDatei "C:\Temp\*.tmp"
  EntferneDatei "C:\WINDOWS\Cookies\*.txt"

  ' ... Weitere Dateien, die gelöscht werden sollen


  ' Namen und Pfad der Backup-Datei festlegen, Muster "Backup jj-mm-tt.zip"
  BackupDatei = "E:\Backup " & Right("00" & (Year(Date) mod 100), 2)
  BackupDatei = BackupDatei & "-" & Right("0" & Month(Date), 2)
  BackupDatei = BackupDatei & "-" & Right("0" & Day(Date), 2)

  With CreateObject("WScript.Shell")

    '    Alle lokalen Festplatten mit Scandisk prüfen
    .Run "SCANDSKW.EXE /all /n", 4, True

    '    Sicherung der Registry anlegen
    .Run "SCANREG.EXE /backup", 4, True

    '    Dateien in ZIP-Archiv sichern
    .Run """C:\Tools\PowerArchiver\POWERARC.EXE"" -a -c4 -s """ & BackupDatei & """ """ & """C:\Eigene Dateien\*.*""", 4, True

    '    Alle lokalen Festplatten defragmentieren
    .Run "DEFRAG.EXE /all /f /noprompt", 4, True

  End With

  Sub EntferneDatei(Datei)
    With CreateObject("Scripting.FileSystemObject")
      If .FileExists(Datei) then .DeleteFile Datei
    End With
  End Sub
Inhalt der VBS-Datei ‘Service.VBS’ für Win XP
   Option Explicit

   ' Voreisntellungen, die auf jedem Rechner manuell angepasst werden müssen
   ' Wo sind die Eigenen Dateien?
   Const EigeneDateien = "D:\0\"             ' Immer mit \ am Ende

   ' Wo ist das Temp-Verzeichnis?
   Const WinTemp       = "C:\Temp\"          ' Immer mit \ am Ende

   ' Wo speichert der Anwender seine Daten?
   Const User          = "C:\Dokumente und Einstellungen\Chef\"

   Dim Verzeichnis, BackupDatei, FSO

   On Error Resume Next

   Set FSO = CreateObject("Scripting.FileSystemObject")

   ' Unnötige Dateien löschen
   OrdnerLeeren WinTemp & "*.tmp"
   OrdnerLeeren WinTemp & "*tmp*.*"
   OrdnerLeeren WinTemp & "*.log"
   OrdnerLeeren "C:\WINDOWS\Temp\Cookies\*.txt"
   OrdnerLeeren EigeneDateien & "Anwendungen\Mozilla\Cache\*.*"

   With FSO
        For Each Verzeichnis In .GetFolder(WinTemp).SubFolders
            If InStr(1, Verzeichnis.Name, "tmp") > 0 Then
               .DeleteFolder WinTemp & Verzeichnis.Name, True
            End If
        Next
   End With

   On Error Goto 0

   ' Namen und Pfad der Backup-Datei festlegen, Muster "Backup jj-mm-tt.zip"
   BackupDatei = "C:\Backup\EigeneDateien\Backup " & Right("00" & (Year(Date) mod 100), 2)
   BackupDatei = BackupDatei & "-" & Right("0" & Month(Date), 2)
   BackupDatei = BackupDatei & "-" & Right("0" & Day(Date), 2) & ".zip"

   With CreateObject("WScript.Shell")

        ' Tote Links im Start- und Dokumentenmenü löschen
        .Run """" & EigeneDateien & "Programmierung\VBScript\Tote Links Löschen.vbs"" """ & User & "Recent"" """ & User & "Startmenü""", , True

        ' Dateien in ZIP-Archiv sichern
        .Run """C:\Programme\_Tools\PowerArchiver\POWERARC.EXE"" -a -c4 -s """ &  BackupDatei & """ """ & EigeneDateien & "*.*""", , True

        ' Die angegebenen lokalen Festplatten defragmentieren
        .Run "DEFRAG C: /v", 4, True
        .Run "DEFRAG D: /v", 4, True

   End With

   ' Leert ganze Ordner, wenn sie vorhanden sind
   Private Sub OrdnerLeeren(Ordner)
      Dim Verzeichnis
      With FSO
           Verzeichnis = .GetParentFolderName(Ordner)
           If .FolderExists(Verzeichnis) Then .DeleteFile Ordner, True
      End With
   End Sub


   ' Löscht ganze Ordner, wenn sie leer sind
   Private Sub OrdnerEntf(Ordner)
           With FSO
                If .FolderExists(Ordner) Then
                   If .GetFolder(Ordner).Files.Count = 0 Then .DeleteFolder Ordner, True
                End If
           End With
   End Sub

Natürlich kann man noch weitere Aufgaben von diesem Skript erledigen lassen, z.B. einen Virenscanner startet (sollte als erste Aktion im Skript stehen.
Das folgende Beispiel zeigt für die SystemSuite 3.0 von Ontrack, wie deren Virenscanner einbinden kann, wobei der Standardinstallationspfad verwendet wird:

.Run """C:\Programme\Ontrack\SystemSuite\AVCMD.EXE"" /S C:", 4, True