Hejsa, Jeg har en Mac OS X server, som jeg skal kopiere en pæn bunke filer fra (ca. 2000 GB)...
Mit problem er nu, at der er nogle sti-navne der er for lange til at blive kopieret, da windows maks. kan håndtere et vist antal tegn... derfor skal jeg bruge et script som kan skrive en logfil over hvilke filer der ikke er blevet kopieret...
Desuden foregår det via netværk, så er lidt usikker på hvordan det skal håndteres...
...og som en sidste ting, ville det være en lækker funktion, hvis man kunne se hvilken fil den kopierer, da det vil taget omkring et døgn at kopiere det hele...
option explicit 'on error resume next dim targetFolder,sourceFolder
sub log(msg) objLog.writeline(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 doCopy(sourceFolder,targetFolder) dim folder,fileCol,folderCol,fil Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
set folder = objFSO.getFolder(sourceFolder) set fileCol = folder.Files set folderCol=folder.SubFolders
For Each fil in filecol 'if not objFSO.FileExists(targetFolder&"\"&fil.name) then on error resume next objFSO.CopyFile SourceFolder&"\"&fil.name, targetFolder&"\"&fil.name If Err.Number = 0 Then 'log "Copying file: "&sourceFolder&"\"&fil.name else log "Can not copy file: "&sourceFolder&"\"&fil.name end if 'end if 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 log "Can not copy folder: "&sourceFolder&"\"&folder.name end if
'end if doCopy sourceFolder&"\"&folder.name,targetFolder&"\"&folder.name next set fileCol = nothing set folderCol = nothing set folder = nothing end sub
Dim objFSO,cont,logfile Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
dim wshShell,objLog Set WshShell = CreateObject("WScript.Shell") if objFSO.FileExists(logfile) then msgBox "Logfilen : "&logfile&" skal slettes inden kopiering begyndes" else set objLog = objFSO.CreateTextFile(logfile, True) WshShell.Popup "Begynder kopiering", 2, , 0
if (chk (sourceFolder,targetFolder)) then doCopy sourceFolder,targetFolder
WshShell.Popup "Kopiering afsluttet", 5, , 0 set objLog = nothing end if
Set objFSO = nothing Set WshShell = nothing
ovenstående virker, hvis du kopierer til en mappe, hvor filerne ikke findes i forvejen. Hvis filerne findes i forvejen fejlmeldes disse filer. Har ikke kunne teste ovenstående med for lange filer, men det burde virke.
du skal bare lige rette : sourceFolder="C:\test" targetFolder="C:\test1" logfile="C:\log.txt" så det kommer til at passe.
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.