从子文件夹中的文件列表批量复制文件

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

【讨论】:

以上是关于从子文件夹中的文件列表批量复制文件的主要内容,如果未能解决你的问题,请参考以下文章

怎样批量提取视频的文件名?

批量复制并禁止所有输出

如何获取存档中的文件列表? [复制]

如何获取 git commit 中的文件列表? [复制]

如何将文件中的一行数字读入列表中? [复制]

如何将文件读入 Python 中的列表? [复制]