Nu er det mig som har oprettet spørgsmålet på itsvar.dk (
http://www.itsvar.dk/doctor/thread.aspx?id=114843), men det er okay, hvis der er nogle her på eksperten.dk som kan finde en løsning på "problemet".
Scriptet som skal rettes er:
**************************************************************
' 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