********************START*******************************
@echo off
setlocal enabledelayedexpansion
rem set parameter here
rem dirCopy: 0-file copy, 1-directory copy
set sourcePath=C:\Test\source
set targetPath=C:\Test\target
set fileList=list.txt
set dirCopy=1
set /a copyCount=0
dir /s /b !sourcePath!>filelist.txt
if !dirCopy! equ 0 (
goto FILE_COPY
)else (
goto DIR_COPY
)
:DIR_COPY
for /f "delims=" %%i in (!fileList!) do (
find "%%i" filelist.txt > findfile.txt
if !errorlevel! equ 0 (
for /f "skip=2 delims=" %%j in (findfile.txt) do (
set tPath=%%~fj
set tPath=!tPath:%sourcePath%=!
echo f | xcopy /y %%j !targetPath!!tPath!>nul
set /a copyCount+=1
)
)else (
echo can't find file %%i
)
)
goto END
:FILE_COPY
for /f "delims=" %%i in (!fileList!) do (
find "%%i" filelist.txt > findfile.txt
if !errorlevel! equ 0 (
for /f "skip=2 delims=" %%j in (findfile.txt) do (
copy /y %%j !targetPath!\%%i>nul
set /a copyCount+=1
)
)else (
echo can't find file %%i
)
)
goto END
:END
del filelist.txt
del findfile.txt
echo ************************************
echo copy file success: !copyCount!
pause
********************END*******************************
sourcePath是查找的文件夹,targetPath是目标文件夹,dirCopy表示是只复制文件(值为0)还是带目录复制(值为1),fileList是所有的待查找文件列表,是一个文本文件,格式如下:
光辉岁月.txt江南.txt123.mp3
执行完毕后会得到类似的结果,找不到的文件给出文件名,然后给出复制了多少个文件的结果:
温馨提示:答案为网友推荐,仅供参考