Hjælp til programmering (kopiere brugerdata)
HejJeg har fået hjælp til dette script som kopiere alle de vigtige data fra brugerne. Da jeg intet selv kender til programmering giver jeg 200 point til den, som kan lave mig scriptet.
Scriptet kører fint, men jeg kunne godt tænke mig at få tilføjet nogle forskellige ting:
* Et vindue, hvor man kan vælge om man vil lave en backup eller en restore.
* Når man vælger backup eller restore, skal man kunne indlæse eller gemme filer, hvor man ønsker det.
* Et vindue, hvor man kan vælge, hvilke bruger man ønsker at lave backup af (og evt. hvilke man ønsker at indlæse).
Lad os tage en ting af gangen og finde ud af, hvordan vi laver bedst laver en version 2.
*******************************************************'
' dette script vil kopiere outlook, foretrukne, dokumenter og adressebog
' fra brugere på c: til alle brugere på h: eller omvendt
' parameter hentes - default er c: h: (alle)
on error resume next
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim f
Dim MitNavn
Dim NytNavn
Dim FraDir
Dim TilDir
Dim FilNavn
Dim HvilkenVej
Dim FraDrev
Dim TilDrev
Dim I
Dim Msg
Dim Parametre
Set argsUnnamed = WScript.Arguments.Unnamed
Set WshShell = WScript.CreateObject("WScript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")
If argsUnnamed.Count > 0 Then RekPar = argsUnnamed.Item(0)
if RekPar = "¡º¹²³¡" then
' *********************************************************************************************
' dette er en underrutine, som kaldes af prog selv (rekursivt kald til gennemløb af undermapper)
' udfører filkopiering og logskrivning
xTilDrev = argsUnnamed.Item(1)
if argsUnnamed.Count = 2 then
xFraDir = argsUnnamed.Item(2)
else
xFraDir = ""
For I = 2 To argsUnnamed.Count - 1
xFraDir = xFraDir & " " & argsUnnamed.Item(I)
Next
xFraDir = Trim(xFraDir)
end if
xTilDir = xTilDrev & mid(xFraDir,3,len(xFraDir))
if fs.folderexists(xFraDir) then
' kopier alle filer i mappen (param2+) til (param1) og kalder sig selv vedr evt undermapper
' opretter mappetræ inkl evt foregående mapper på (param1)
I = instr(4,xTilDir,"\",1)
Oprettet = FALSE
while I > 0
if not fs.folderexists(left(xTilDir,I)) then
set fs2 = fs.createfolder(left(xTilDir,I))
Oprettet = TRUE
end if
I = instr(I+1,xTilDir,"\",1)
wend
if Oprettet then set fs2 = Nothing
Set folder1 = fs.GetFolder(xFraDir)
' kopiérer alle filer og tilskriver log-fil
Set f = fs.OpenTextFile("kopieralt.log", ForAppending, True)
Oprettet = FALSE
For each FileName in folder1.files
if not Oprettet then
f.Write xFraDir
f.Write vbCrLf
Oprettet = TRUE
end if
xFraFil = xFraDir & FileName.name
xTilFil = xTilDir & FileName.name
intReturn = fs.CopyFile(xFraFil, xTilFil, TRUE)
if err.number = 0 then
f.Write space(5) & FileName.name & vbCrLf
else
f.Write "Fejl " & err.Description & ": " & FileName.name & vbCrLf
err.Clear
end if
next
f.Close
' finder undermapper i folderen FraDir, og kalder sig selv med nye parametre
Set SubFolders = folder1.SubFolders
If SubFolders.Count <> 0 Then
for Each SubFolder In SubFolders
xNytDir = SubFolder.Path
if not right(xNytDir,1) = "\" then xNytDir = xNytDir & "\"
intReturn = WshShell.Run("kopieralt.vbs ¡º¹²³¡ " & xTilDrev & " " & xNytDir, 7, FALSE)
Next
End If
Set folder1 = nothing
Set SubFolders = nothing
end if
else
' *********************************************************************************************
' dette er hovedrutinen, som brugeren kalder
MitNavn = ""
FraDir = "D:"
TilDir = "Q:\Brugerprofile\"
If argsUnnamed.Count > 0 Then FraDir = argsUnnamed.Item(0)
If argsUnnamed.Count > 1 Then TilDir = argsUnnamed.Item(1)
If argsUnnamed.Count > 2 Then
MitNavn = ""
For I = 2 To argsUnnamed.Count - 1
MitNavn = MitNavn & " " & argsUnnamed.Item(I)
Next
MitNavn = Trim(MitNavn)
End If
' er parametre ok, så kopiér data til brugere
If fs.folderexists(FraDir & "\Documents and Settings\") _
And Mid(FraDir, 2, 1) = ":" _
And Mid(TilDir, 2, 1) = ":" Then
If MitNavn = "" Then
intReturn = MsgBox("Vil du kopiere data fra brugerne på " & FraDir & vbCrLf & "til brugerne på " & TilDir, vbYesNo, "Kopier")
Else
intReturn = MsgBox("Vil du kopiere data fra " & MitNavn & " på " & FraDir & vbCrLf & "til " & MitNavn & " på " & TilDir, vbYesNo, "Kopier")
End If
If intReturn = vbYes Then
' lav en logfil
Set f = fs.OpenTextFile("kopieralt.log", ForAppending, True)
f.Write vbCrLf
f.Write vbCrLf
f.Write Now()
f.Write vbCrLf
f.Write "Kopiere Outlook, Adressebog, Dokumenter og Foretrukne fra " & FraDir & " til " & TilDir & vbCrLf
f.Close
' finder brugere på fradrevet:
FraDir = FraDir & "\Documents and Settings\"
Set folder1 = fs.GetFolder(FraDir)
Set SubFolders = folder1.SubFolders
' kopierer filer
If SubFolders.Count <> 0 Then
For Each SubFolder In SubFolders
NytNavn = SubFolder.Path
NavnOk = False
If MitNavn = "" Then
NavnOk = True
If LCase(Right(NytNavn,10)) = "\all users" Or LCase(Right(NytNavn,13)) = "\default user" Then NavnOk = False
Else
If LCase(Right(NytNavn, Len(MitNavn)+1)) = "\" & LCase(MitNavn) Then NavnOk = True
End If
If NavnOk Then
I = InStr(1, NytNavn, "Settings\", 1) + 9
' fjerner evt skrivebekyttelse på filer og mapper (dog ikke på skjulte)
' intReturn = WshShell.Run("cmd /c attrib -r /s /d """ & TilDrev & mid(NytNavn,3,len(NytNavn)) & "\*.*""", 7, FALSE)
' skriver log - ny persons data
Set f = fs.OpenTextFile("kopieralt.log", ForAppending, True)
f.Write vbCrLf
f.Write Mid(NytNavn, I, Len(NytNavn))
f.Write vbCrLf
f.Close
FraDrev = NytNavn
TilDrev = Left(TilDir, 2)
' *********************************************************************************************
' flere filer kan medtages ved at kopierer og tilrette disse linier
' FilNavn = stedet, hvor filerne ligger pånær c:\doc...\brugernavn
' intReturn linien kopieres (skal ikke tilrettes)
' emails osv for alle identiteter på brugeren
FilNavn = "\Lokale indstillinger\Application Data\Identities\"
intReturn = WshShell.Run("kopieralt.vbs ¡º¹²³¡ " & TilDrev & " " & FraDrev & FilNavn, 7, FALSE)
' outlook fil
FilNavn = "\Lokale indstillinger\Application Data\Microsoft\Outlook\"
intReturn = WshShell.Run("kopieralt.vbs ¡º¹²³¡ " & TilDrev & " " & FraDrev & FilNavn, 7, FALSE)
' adressebog
FilNavn = "\Application Data\Microsoft\Address Book\"
intReturn = WshShell.Run("kopieralt.vbs ¡º¹²³¡ " & TilDrev & " " & FraDrev & FilNavn, 7, FALSE)
' outlook regler og øvrig opsætning
FilNavn = "\Application Data\Microsoft\Outlook\"
intReturn = WshShell.Run("kopieralt.vbs ¡º¹²³¡ " & TilDrev & " " & FraDrev & FilNavn, 7, FALSE)
' dokumenter
FilNavn = "\Dokumenter\"
intReturn = WshShell.Run("kopieralt.vbs ¡º¹²³¡ " & TilDrev & " " & FraDrev & FilNavn, 7, FALSE)
' foretrukne
FilNavn = "\Foretrukne\"
intReturn = WshShell.Run("kopieralt.vbs ¡º¹²³¡ " & TilDrev & " " & FraDrev & FilNavn, 7, FALSE)
End If
Next
Set folder1 = Nothing
Set SubFolders = Nothing
End If
Else
MsgBox "Intet kopieret - bruger afbrød..."
End If
Else
' hvis fejl i fra-navn eller andre parametre, så vis fejl
If Mid(FraDir, 2, 1) <> ":" Then
Msg = "Startdrev mangler (1. parameter)"
ElseIf Mid(TilDir, 2, 1) <> ":" Then
Msg = "Måldrev mangler (2. parameter)"
Else
Msg = "Bruger ikke fundet"
End If
Msg = Msg & vbCrLf & "parametre er startdrev måldrev [navn på kilde]" & vbCrLf
Msg = Msg & "fx c: h: Hans Hansen" & vbCrLf
Msg = Msg & "for at kopiere/sende hans hansens data på drev c til drev h" & vbCrLf
Msg = Msg & "uden parametre sendes alle brugeres data på c: til h:"
NytNavn = InputBox(Msg, "Parametre?", argsUnnamed.Item(0) & " " & argsUnnamed.Item(1) & " " & MitNavn)
intReturn = WshShell.Run("kopieralt.vbs " & NytNavn, 7, False)
End If
Set f = Nothing
end if
Set WshShell = Nothing
Set fs = Nothing
