11. januar 2005 - 10:12
Der 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.
Vh,
Bat.
11. januar 2005 - 13:25
#2
Hejsa bat1234
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 = ""
strUserName = WSHNetwork.UserName
Wend
strUserDomain = WSHNetwork.UserDomain
' Read the user's account "Member Of" tab info across the network
' once into a dictionary object.
'Checking if user is member of group
path = "\\maskine\c$"
file = "test.txt"
folder = "testfolder"
foldername = "nytestfolder"
Dim mFile1
Dim mFile2
Set fso = CreateObject("Scripting.FileSystemObject")
Set mFile1 = fso.GetFile(path & "\" & foldername & "\" & file)
If fso.FileExists(path & "\" & folder & "\" & file) then
Set mFile2 = fso.GetFile(path & "\" & folder & "\" & file)
If mFile1.DateLastModified > mFile2.DateLastModified Then
msgbox "test2"
fso.CopyFile path & "\" & foldername & "\" & file, path & "\" & folder & "\" , True
msgbox "test1"
end if
else
'fso.CopyFile path & "\" & foldername & "\" & file, path & "\" & folder & "\" , True
msgbox "test"
end if
Håber du kan bruge det:):)
12. januar 2005 - 07:57
#3
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.
12. januar 2005 - 07:59
#4
Tofte: Jeg sætter koden ind her:
option explicit
dim targetFolder,sourceFolder
sub log(msg)
'msgBox msg
end sub
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")
sourceFolder="C:\templates"
targetFolder="d:\templates"
Set WshShell = CreateObject("WScript.Shell")
WshShell.Popup "Begynder kopiering", 2, , 0
if (chk (sourceFolder,targetFolder)) then
doCopy sourceFolder,targetFolder
WshShell.Popup "Kopiering afsluttet", 2, , 0
end if
Set WshShell = nothing
Set objFSO = nothing
12. januar 2005 - 16:37
#5
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
16. januar 2005 - 16:37
#6
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.
30. januar 2005 - 18:10
#7
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.