-
> -----
> REM BackItUp.VBS (c) c't/Tobias Weltner
> set fs = CreateObject("Scripting.FileSystemObject")
> set WSHShell = CreateObject("WScript.Shell")
> vernieuwd = 0
> nieuwgekopieerd = 0
> uptodate = 0
> ontoepasselijk = 0
> nieuwemap = 0
> probleem = 0
> ' ---------------------------------------------------------------------
> ' Syntax: BackItUp bron, doel, extensies, modus
> ' bron: map met de originelen
> ' doel: map met de back-up-bestanden
> ' extensies: Lijst met de bestandsextensies die moeten worden
> ' opgeslagen.
> ' Extensies door puntkomma's scheiden: ";vbs;doc;txt;"
> ' modus: 1 ook submappen opslaan
> ' 2 alle bestanden opslaan
> ' 4 altijd nieuw kopieren
> '
> BackItUp "C:\PROGRAM FILES\HNWIN\DATA", "E:\BACKUP\HNWIN\W2KDATA", "", 1+2
> BackItUp "C:\MIJN DOCUMENTEN", "E:\BACKUP\MIJN DOCUMENTEN", "", 1+2
> ' ---------------------------------------------------------------------
> ' Statusrapport voor 10 seconden laten zien:
> r = nieuwgekopieerd & " bestanden nieuw gekopieerd" + vbCr
> r = r & vernieuwd & " bestanden geactualiseerd" + vbCr
> r = r & uptodate & " bestanden waren al actueel" + vbCr
> r = r & ontoepasselijk & " bestanden voldeden niet aan de selectiecriteria."
> + vbCr
> r = r & probleem & " bestanden konden door fouten niet worden gekopieerd." +
> vbCr
> r = r & nieuwemap & " nieuwe mappen gemaakt."
> WSHShell.Popup r, 10, "Report", vbInformation
> sub BackItUp(original, doel, extensies, mode)
> ' "\" aan het einde van de padnaam verwijderen als hij daar zit:
> if right(original,1)="\" then original=left(original, len(original)-1)
> if right(doel,1)="\" then doel=left(doel, len(doel)-1)
> ' Fouten ondervangen:
> if not fs.FolderExists(original) then
> fout = "Bronmap """ & original & """ bestaat niet!"
> end if
> if not fs.FolderExists(doel) then
> fout = "Doelmap """ & doel & """ bestaat niet!"
> end if
> if not fout="" then
> MsgBox fout, vbCritical
> WScript.Quit
> end if
> ' Bronmap opslaan:
> set map = fs.GetFolder(original)
> BackupMap map, original, doel, extensies, mode
> end sub
> sub BackupMap(folderobj, original, opslag, extensies, mode)
> ' Bestanden in deze map opslaan
> BackupFiles folderobj, original, opslag, extensies, mode
> ' Submappen in deze map opslaan
> ' (recursieve aanroep)
> if (mode and 1) then
> for each submap in folderobj.subfolders
> BackupMap submap, original, opslag, extensies, mode
> next
> end if
> end sub
> sub BackupFiles(map, original, opslag, extensies, mode)
> ' alle bestanden in deze map laten zien
> for each bestand in map.files
> ' bestandsextensie van het huidige bestand verkrijgen:
> extensie = ";" & lcase(fs.GetExtensionName(bestand.Path)) & ";"
> ' bij mode=2 of passende extensie opslaan:
> if (mode and 2) or (Instr(lcase(extensies), extensie) >0) then
> ' Origineel wanneer voor het laatst veranderd?
> oudeoriginal = bestand.DateLastModified
> ' zit het originele bestand in een submap?
> ' pad van het bestand bepalen:
> bestandpad = bestand.path
> ' bestandnamen uit pad verwijderen:
> bestandpad = left(bestandpad, InstrRev(bestandpad, "\"))
> ' alleen de subdirectory van de originele map overlaten:
> bestandpad = mid(bestandpad, len(original)+1)
> ' opslagmap + evtl. submap:
> opslagmap = opslag + bestandpad
> ' doelbestandnaam:
> doelbestand = opslagmap & bestand.Name
> ' Bestaat al een reservekopie?
> doelbestandexist = fs.FileExists(doelbestand)
> if doelbestandexist then
> ' van wanneer is de reservekopie?
> oudedoel = fs.GetFile(doelbestand).DateLastModified
> else
> oudedoel = CDate("1.1.80")
> !Line 105!
> flag = true
> end if
> ' reservekopie is verouderd of mode=4:
> if (oudeoriginal>oudedoel) or (mode and 4) then
> ok = CopyIt(bestand,opslagmap)
> if flag and ok then
> nieuwgekopieerd = nieuwgekopieerd + 1
> elseif ok then
> vernieuwd = vernieuwd + 1
> else
> probleem = probleem + 1
> end if
> else
> uptodate = uptodate + 1
> end if
> else
> ontoepasselijk = ontoepasselijk + 1
> end if
> next
> end sub
> function CopyIt(filehandle, doelmap)
> ' kopieert het bestand
> on error resume next
> if not fs.FolderExists(doelmap) then
> fs.CreateFolder doelmap
> nieuwemap = nieuwemap + 1
> end if
> doel = doelmap & filehandle.name
> filehandle.copy doel, true
> if err.number=0 then
> CopyIt = true
> else
> CopyIt = false
> err.clear
> end if
> end function
> ----------------------------------------------------------------------------
> -------