遍历子目录并创建类似的目录结构,然后处理子目录中的每个文件

遍历子目录并创建类似的目录结构,然后处理子目录中的每个文件

我想创建一个批处理脚本来处理目录和该目录中的文件,基本上我使用一个工具将目录中的文件转换为某种格式,它可以分别处理每个文件,也可以处理完整的目录。现在我想转换目录/子目录中具有相同目录结构的所有文件,例如,假设我有 3 个目录:


║═════ Folder 1
║         ║
║         ║══════ Folder A
║                     ║
║                     ║═════ File1.adt
║═════ Folder 5
          ║═════ File5.adt

现在我想要以相同的目录结构转换上述文件,但可以在不同的位置。


║═════ Folder 1
║         ║
║         ║══════ Folder A
║                     ║
║                     ║═════ File1.txt
║═════ Folder 5
          ║═════ File5.txt

答案1

你应该使用robocopy 这个:

robocopy /e "%source folder%" "%destination%"


-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows     ::     Version XP010
-------------------------------------------------------------------------------

  Started : Sun Aug 11 12:58:38 2013

          Usage :: ROBOCOPY source destination [file [file]...] [options]

         source :: Source Directory (drive:\path or \\server\share\path).
    destination :: Destination Dir  (drive:\path or \\server\share\path).
           file :: File(s) to copy  (names/wildcards: default is "*.*").

::
:: Copy options :
::
         /S :: copy Subdirectories, but not empty ones.
         /E :: copy subdirectories, including Empty ones.
         /LEV:n :: only copy the top n LEVels of the source directory tree.

         /Z :: copy files in restartable mode.
         /B :: copy files in Backup mode.
        /ZB :: use restartable mode; if access denied use Backup mode.

  /COPY:copyflag[s] :: what to COPY (default is /COPY:DAT).
               (copyflags : D=Data, A=Attributes, T=Timestamps).
               (S=Security=NTFS ACLs, O=Owner info, U=aUditing info).

           /SEC :: copy files with SECurity (equivalent to /COPY:DATS).
       /COPYALL :: COPY ALL file info (equivalent to /COPY:DATSOU).
        /NOCOPY :: COPY NO file info (useful with /PURGE).

         /PURGE :: delete dest files/dirs that no longer exist in source.
           /MIR :: MIRror a directory tree (equivalent to /E plus /PURGE).

           /MOV :: MOVe files (delete from source after copying).
          /MOVE :: MOVE files AND dirs (delete from source after copying).

       /A+:[RASHNT] :: add the given Attributes to copied files.
       /A-:[RASHNT] :: remove the given Attributes from copied files.

        /CREATE :: CREATE directory tree and zero-length files only.
           /FAT :: create destination files using 8.3 FAT file names only.
           /FFT :: assume FAT File Times (2-second granularity).
           /256 :: turn off very long path (> 256 characters) support.

         /MON:n :: MONitor source; run again when more than n changes seen.
         /MOT:m :: MOnitor source; run again in m minutes Time, if changed.

      /RH:hhmm-hhmm :: Run Hours - times when new copies may be started.
        /PF :: check run hours on a Per File (not per pass) basis.

         /IPG:n :: Inter-Packet Gap (ms), to free bandwidth on slow lines.

::
:: File Selection Options :
::
         /A :: copy only files with the Archive attribute set.
         /M :: copy only files with the Archive attribute and reset it.
    /IA:[RASHCNETO] :: Include only files with any of the given Attributes set.
    /XA:[RASHCNETO] :: eXclude files with any of the given Attributes set.

 /XF file [file]... :: eXclude Files matching given names/paths/wildcards.
 /XD dirs [dirs]... :: eXclude Directories matching given names/paths.

        /XC :: eXclude Changed files.
        /XN :: eXclude Newer files.
        /XO :: eXclude Older files.
        /XX :: eXclude eXtra files and directories.
        /XL :: eXclude Lonely files and directories.
        /IS :: Include Same files.
        /IT :: Include Tweaked files.

         /MAX:n :: MAXimum file size - exclude files bigger than n bytes.
         /MIN:n :: MINimum file size - exclude files smaller than n bytes.

      /MAXAGE:n :: MAXimum file AGE - exclude files older than n days/date.
      /MINAGE:n :: MINimum file AGE - exclude files newer than n days/date.
      /MAXLAD:n :: MAXimum Last Access Date - exclude files unused since n.
      /MINLAD:n :: MINimum Last Access Date - exclude files used since n.
               (If n < 1900 then n = n days, else n = YYYYMMDD date).

        /XJ :: eXclude Junction points. (normally included by default).

::
:: Retry Options :
::
           /R:n :: number of Retries on failed copies: default 1 million.
           /W:n :: Wait time between retries: default is 30 seconds.

           /REG :: Save /R:n and /W:n in the Registry as default settings.

           /TBD :: wait for sharenames To Be Defined (retry error 67).

::
:: Logging Options :
::
         /L :: List only - don't copy, timestamp or delete any files.
         /X :: report all eXtra files, not just those selected.
         /V :: produce Verbose output, showing skipped files.
        /TS :: include source file Time Stamps in the output.
        /FP :: include Full Pathname of files in the output.

        /NS :: No Size - don't log file sizes.
        /NC :: No Class - don't log file classes.
           /NFL :: No File List - don't log file names.
           /NDL :: No Directory List - don't log directory names.

        /NP :: No Progress - don't display % copied.
           /ETA :: show Estimated Time of Arrival of copied files.

      /LOG:file :: output status to LOG file (overwrite existing log).
     /LOG+:file :: output status to LOG file (append to existing log).

           /TEE :: output to console window, as well as the log file.

           /NJH :: No Job Header.
           /NJS :: No Job Summary.

::
:: Job Options :
::
       /JOB:jobname :: take parameters from the named JOB file.
      /SAVE:jobname :: SAVE parameters to the named job file
          /QUIT :: QUIT after processing command line (to view parameters).
          /NOSD :: NO Source Directory is specified.
          /NODD :: NO Destination Directory is specified.
        /IF :: Include the following Files.

相关内容