How to copy a directory structure but only include certain files (using windows batch files)

前端 未结 15 1697
半阙折子戏
半阙折子戏 2020-12-07 07:50

As the title says, how can I recursively copy a directory structure but only include some files. E.g given the following directory structure:

folder1
  folde         


        
15条回答
  •  一向
    一向 (楼主)
    2020-12-07 08:09

    Thanks To Previous Answers. :)

    This script named "r4k4copy.cmd":

    @echo off
    for %%p in (SOURCE_DIR DEST_DIR FILENAMES_TO_COPY) do set %%p=
    cls
    echo :: Copy Files Including Folder Tree
    echo :: http://stackoverflow.com
    rem     /questions/472692/how-to-copy
    rem     -a-directory-structure-but-only
    rem     -include-certain-files-using-windows
    echo :: ReScripted by r4k4
    echo.
    if "%1"=="" goto :NoParam
    if "%2"=="" goto :NoParam
    if "%3"=="" goto :NoParam
    setlocal enabledelayedexpansion
    set SOURCE_DIR=%1
    set DEST_DIR=%2
    set FILENAMES_TO_COPY=%3
    for /R "%SOURCE_DIR%" %%F IN (%FILENAMES_TO_COPY%) do (
    if exist "%%F" (
    set FILE_DIR=%%~dpF
    set FILE_INTERMEDIATE_DIR=!FILE_DIR:%SOURCE_DIR%=!
    xcopy /E /I /Y "%%F" "%DEST_DIR%!FILE_INTERMEDIATE_DIR!"
    )
    )
    goto :eof
    :NoParam
    echo.
    echo Syntax: %0 [Source_DIR] [Dest_DIR] [FileName]
    echo Eg.   : %0 D:\Root E:\Root\Lev1\Lev2\Lev3 *.JPG
    echo Means : Copy *.JPG from D:\Root to E:\Root\Lev1\Lev2\Lev3
    

    It accepts variable of "Source", "Destination", and "FileName". It also can only copying specified type of files or selective filenames.

    Any improvement are welcome. :)

提交回复
热议问题