21. oktober 2010 - 15:07
Der 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
Jeg håber det er til at forstå.
Mvh. og mange tak.
Mzane
19. januar 2011 - 10:17
#4
Hov, jeg fik lige en reminder på denne post.
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!"