Avatar billede mzane Nybegynder
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
Avatar billede max33 Nybegynder
21. oktober 2010 - 16:47 #1
hvilket OS?
Avatar billede mzane Nybegynder
21. oktober 2010 - 16:58 #2
Windows XP
Avatar billede max33 Nybegynder
27. oktober 2010 - 08:14 #3
lav en tekstfil kopierfiler.bat

copy c:\dirRoot\QWE\fil.txt c:\dirRoot\Allfiles\QWE.txt
Avatar billede mzane Nybegynder
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!"
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester