11. januar 2005 - 10:12Der er
5 kommentarer og 2 løsninger
Logon script der synkroniserer
Hej,
kan nogen vise mig et logon-script der skal bruges i et win2000-domæne, som kan synkronisere en mappe på serveren med en mappe på brugernes lokale c:-drev??
Scriptet skal altså kopiere de ændrede filer på serveren over på c:-drevene, og også slette filer som måtte være blevet slettet på serveren.
her er et script som checker hvor gammel en fil er og kopierer en nyere fra en anden mappe hvis der findes en nyere fil. Du skal bare ændre stierne så virker det hos dig:)
Dim WSHNetwork Dim FSO Dim path Dim file Dim folder Dim foldername Dim strUserName ' Current user Dim strUserDomain ' Current User's domain name Dim ObjGroupDict ' Dictionary of groups to which the user belongs
Set WSHNetwork = WScript.CreateObject("WScript.Network") Set FSO = CreateObject("Scripting.FileSystemObject") ' ' Wait until the user is really logged in... ' strUserName = "" While strUserName = ""
Tofte: dit script ser godt ud, det klarer det jeg skal bruge et langt stykke af vejen! Men det checker ikke datelastmodified, og kopierer derfor ikke filer fra sourcetarget som som er blevet ændret. Tror du du kunne hjælpe mig med at få det ind i koden også!? Måske kan noget af det fra Maximus25's kode bruges??
Maximus25: Tak for koden. Jeg kan nok bruge noget af den.
function Chk(sourceFolder,targetFolder) chk=true if not objFSO.FolderExists(sourceFolder) then MsgBox("Kan ikke åbne kilde : "&sourceFolder) chk=false end if
if not objFSO.FolderExists(targetFolder) then msgBox("Kan ikke åbne destination : "&targetFolder) chk=false end if end function
sub Quit() MsgBox "Forbindelsen til netværket afbrudt" WScript.Quit end sub
sub doCopy(sourceFolder,targetFolder) dim folder,fileCol,folderCol,fil,tFolder,tFileCol,tFolderCol,FileStr,FolderStr Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
set folder = objFSO.getFolder(sourceFolder) set tFolder = objFSO.getFolder(targetFolder)
set tFolderCol=tFolder.SubFolders set tFileCol=tFolder.Files
set fileCol = folder.Files set folderCol=folder.SubFolders
FileStr="" For Each fil in tFileCol FileStr=FileStr&";"&fil.name&";," next FolderStr="" For Each folder in tFolderCol FolderStr=FolderStr&";"&folder.name&";," next For Each fil in filecol if not objFSO.FileExists(targetFolder&"\"&fil.name) then objFSO.CopyFile SourceFolder&"\"&fil.name, targetFolder&"\"&fil.name
If Err.Number = 0 Then log "Copying file: "&sourceFolder&"\"&fil.name else Quit() end if end if FileStr=Replace(FileStr,";"&fil.name&";,","") next
For Each folder in folderCOl if not objFSO.FolderExists(targetFolder&"\"&folder.name) then
objFSO.CreateFolder(targetFolder&"\"&folder.name) If Err.Number = 0 Then log "Creating folder: "&sourceFolder&"\"&folder.name else Quit() end if
end if FolderStr=Replace(FolderStr,";"&folder.name&";,","") doCopy sourceFolder&"\"&folder.name,targetFolder&"\"&folder.name next
set fileCol = nothing set folderCol = nothing set folder = nothing
dim delArrFile,delArrFolder,a
if len(FileStr)>0 then delArrFile=split(FileStr,",") For a = LBound(delArrFile) to UBound(delArrFile)-1 objFSO.DeleteFile(targetFolder&"\"&replace(delArrFile(a),";","")) next end if
if len(FolderStr)>0 then
delArrFolder=split(FolderStr,",") For a = LBound(delArrFolder) to UBound(delArrFolder)-1 objFSO.DeleteFolder(targetFolder&"\"&replace(delArrFolder(a),";","")) next end if
set tFileCol = nothing set tFolderCol = nothing set tFolder = nothing end sub
Dim objFSO,wshShell Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Hvis du ændrer nedenstående afsnit burde det virke således at hvis filerne på kildne er nyere end på destinationen bliver de kopieret For Each fil in filecol if not objFSO.FileExists(targetFolder&"\"&fil.name) then objFSO.CopyFile SourceFolder&"\"&fil.name, targetFolder&"\"&fil.name
If Err.Number = 0 Then log "Copying file: "&sourceFolder&"\"&fil.name else Quit() end if else dim tfile set tfile=objFSO.getFile(targetFolder&"\"&fil.name) if (tfile.DateLastModified < fil.DateLastModified) then objFSO.CopyFile SourceFolder&"\"&fil.name, targetFolder&"\"&fil.name end if end if FileStr=Replace(FileStr,";"&fil.name&";,","") next
Jeg kan anbefale rossourcekittet's robocopy som godt nok er en exe-fil, men som kan spejle mapper - incl. opdatere filer og slette filer som bliver til overs.
Yes. Scriptet kom til at virke som jeg ville have det. Tak til alle. lap: Ja jeg kender godt robocopy og synes det er godt. Men jeg ville nu helst undgå at bruge det i dette tilfælde da jeg ellers ville skulle lægge robocopy ind på alle brugernes pc'er.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.