从子文件夹中的文件列表批量复制文件
Posted
技术标签:
【中文标题】从子文件夹中的文件列表批量复制文件【英文标题】:Batch copy files from list of files in subfolders 【发布时间】:2021-09-04 22:23:04 【问题描述】:我正在尝试将特定文件从列表“filelist.txt”复制到目标文件夹。使用下面提供的代码,我只能从特定的源文件夹执行此操作,并且只有文本文件中的文件名(与完整路径相比)。我想从主文件夹中的子文件夹复制文件。如果我已经在文本文件中复制了我需要的文件的完整路径,我该怎么做?
这是我拥有的代码的开头(根据here 提供的代码构建):
代码
@ECHO ON
SET FileList=G:\filelist.txt
SET Source=G:\fold1
SET Destination=G:\Copy1
FOR /F "USEBACKQ TOKENS=*" %%F IN ("%FileList%") DO XCOPY /F /Y "%Source%\%%~F" "%Destination%\"
GOTO :EOF
【问题讨论】:
您最好使用copy
而不是xcopy
来复制单个文件...
打开命令提示符窗口键入xcopy /?
,按[ENTER]
键,然后阅读其使用信息。您应该注意到它有很多选项,(与 copy
区别开来)。此外,您可能会发现使用For /R
循环或For /F
循环(使用Dir
和/S
) 来枚举子目录,然后检查这些结果是否可以更好地完成您的任务您的filelist.txt
内容使用findstr.exe
。打开命令提示符窗口键入for /?
,按[ENTER]
键,阅读其使用信息,然后对findstr /?
执行相同操作,特别注意其/G
选项。
【参考方案1】:
它对我的条件有效
@echo off
set filelist=filelist.txt
set source=***
set destination=copyl
:work
for %%i in (%filelist%) do set filename=%%~nxi
copy /y %filelist% %tmp%
set "filelist=%tmp%\%filename%"
set "filel=%tmp%\file"
:data
set data=con
set /p data=<%filelist%
more +1 "%filelist%" > "%filel%"
del /q /f %filelist%
ren %filel% %filename%
if not exist "%Source%\%data%" goto exitx
copy "%Source%\%Data%" "%Destination%"
goto data
:exitx
del /q /f %filelist%
del /q /f %filel%
cls
echo Operation Complete!
pause
exit
filelist.txt 示例
test.txt
text.bat
test.cmd
biltudas1.md
【讨论】:
以上是关于从子文件夹中的文件列表批量复制文件的主要内容,如果未能解决你的问题,请参考以下文章