21. oktober 2010 - 15:07Der er
3 kommentarer og 1 løsning
Kopiere flere filer fra mange undermapper til én mappe - Batch script
Hej Eksperter,
Jeg skal lave en batchfil, som skal kunne hente en masse filer som ligger i forskellige undermapper (f.eks. dirRoot\dirID\*.*)
Filerne skal kopieres og ligges i en fælles mappe (f.eks. dirRoot\Allfiles\)
Der er én fil i hver undermappe. Hvis det er muligt skal filerne navngives efter deres mappenavn.
Dvs. en succesfuld løsning på ovenstående vil gøre følgende:
Filer der skal kopieres og renames: \dirRoot\QWE\fil.txt \dirRoot\E4S\fil.txt \dirRoot\PEL\fil.txt \dirRoot\JKD\fil.txt \dirRoot\MBM\fil.txt
Kopieres hertil med følgende navne: \dirRoot\Allfiles\QWE.txt \dirRoot\Allfiles\E4S.txt \dirRoot\Allfiles\PEL.txt \dirRoot\Allfiles\JKD.txt \dirRoot\Allfiles\MBM.txt
Mød en af Nordens fremmeste eksperter i adfærdsdesign – Morten Münster, der bl.a. har skrevet ” Jytte fra marketing er desværre gået for i dag” – på Computerworld Cloud & AI Festival.
Jeg har løst opgaven ved at lave et VB script, som jo sagtens kan eksekveres fra cmd. Hvis nogen skulle kunne bruge løsningen har jeg den her:
Dim filesys, FolderMain, FolderSecondary, Subfolder, SubSubfolder, FolderCollection, SubFolderCollection, FileCollection, FileNewName, FileCounter, TheFile Set filesys = CreateObject("Scripting.FileSystemObject") Set FolderMain = filesys.GetFolder("Behandles") Set FolderCollection = FolderMain.SubFolders FileCounter=0 For Each Subfolder in FolderCollection Set FolderSecondary = filesys.GetFolder(FolderMain &"\"& Subfolder.name) Set SubFolderCollection = FolderSecondary.SubFolders For Each SubSubfolder in SubFolderCollection Set FileCollection = SubSubfolder.Files 'FileCounter = FileCounter + 1 'For Debug For Each TheFile in FileCollection 'Rename file & copy to mainfolder If filesys.GetExtensionName(TheFile)="001" Then if FileCounter = 0 then Wscript.Echo "First file found!" & vbCrLf & vbCrLf & "Click OK to begin process" End If FileCounter = FileCounter + 1 FileNewName = Subfolder.Name & "_" & SubSubfolder.Name & "_" & FileCounter & ".001" 'Wscript.Echo FileNewName 'For Debug TheFile.name = FileNewName filesys.CopyFile TheFile, "C:\Temp\EPJ\NewFiles\" End If Next Next Next Wscript.Echo "Done! " & vbCrLf & FileCounter & " files has been copied!"
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.