批量复制特定文件到子文件夹

时间:2013-07-23 23:39:20

标签: batch-file copy xcopy

我正在运行一个Windows批处理文件,用于将特定文件移动到子文件夹中。

@ECHO OFF
ECHO Start Copy

setlocal enabledelayedexpansion

set SOURCE_DIR=C:\Users\paul.ikeda\Support\SNDataDemo91\SolidCAD\Inventor_in
set DEST_DIR=C:\Users\paul.ikeda\Support\SNDataDemo91\SolidCAD\Inventor_in\Files to Import
set FILENAMES_TO_COPY=SN_Router_1.ipt SN_Router_2.ipt SN_Router_3.ipt

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%=!
    echo file "%%F"
        xcopy /Y "%%F" "%DEST_DIR%!FILE_INTERMEDIATE_DIR!"
    )
)

ECHO.
pause

这是将我想要的3个文件复制到子文件夹中,但随后它继续运行并在子文件夹中创建一个子文件夹,将3个文件再次复制到该子文件夹中,并且重复原始源文件夹中的文件数量。我只想将3个文件复制到目标文件夹并停在那里。

有人能发现问题吗?我不知道足够的批处理代码来正确调试它。

1 个答案:

答案 0 :(得分:2)

如果您只想复制文件,那么这可能适合您:

@ECHO OFF
ECHO Start Copy

set "SOURCE_DIR=C:\Users\paul.ikeda\Support\SNDataDemo91\SolidCAD\Inventor_in"
set "DEST_DIR=C:\Users\paul.ikeda\Support\SNDataDemo91\SolidCAD\Inventor_in\Files to Import"
set "FILENAMES_TO_COPY=SN_Router_1.ipt SN_Router_2.ipt SN_Router_3.ipt"

pushd "%SOURCE_DIR%"
for %%F IN (%FILENAMES_TO_COPY%) do (
    echo file "%%F"
    xcopy /Y "%%F" "%DEST_DIR%\"
)
popd
ECHO. done
pause