批处理文件可将文本文件中列出的文件从源复制到目标,并保持文件夹结构

时间:2018-07-18 10:01:40

标签: batch-file

我想创建一个批处理文件,以将文本文件中列出的文件从源文件夹复制到目标文件夹。我检查了this question,但这不会复制文件夹。

现在,我有了下面的代码,它在源文件夹的列表中搜索文件,但随后将它们复制到目标文件夹,但我只得到文件,而不是文件夹。

目标文件夹文件列表位于不同路径下:

File list:         W:\Parrot EN VO\Copylist.txt

DestinationFolder: W:\Parrot EN VO\VO4test

文件列表指向不同位置的文件(有时文件名相同,但是它们位于不同的文件夹中):

W:\Parrot EN VO\VO4_VO4b\Actor_A\file1.wav

W:\Parrot EN VO\VO4_VO4b\Actor_B\file1.wav

W:\Parrot EN VO\VO4_VO4b\Actor_B\file2.wav

W:\Parrot EN VO\VO4_VO4b\Actor_C\file1.wav

这是我的代码:

@echo off
for /f "tokens=* delims=" %%a in ('type "W:\Parrot EN VO\Copylist.txt"') do xcopy /hrkvy "%%a" "W:\Parrot EN VO\VO4test"

暂停

谢谢!

1 个答案:

答案 0 :(得分:0)

我决定从头开始,采用另一种方法,并从我看到的另一个答案中寻求帮助,并设法使它起作用:

@echo off

setlocal enabledelayedexpansion

set "source=input dir"
set "target=output dir"

for /f "tokens=* usebackq" %%A in ("file_list.txt") do (
set "FILE=%%A"
set "dest_file_full=%target%\!FILE:%source%=!"
set "dest_file_filename=%%~nxA"
call set "dest_file_dir=%%dest_file_full:!dest_file_filename!=%%"
if not exist "!dest_file_dir!" (
    md "!dest_file_dir!"
)
set "source_file_full=%source%\!FILE:%source%=!"
copy "!source_file_full!" "!dest_file_dir!"

) 暂停