我想创建一个批处理文件,以将文本文件中列出的文件从源文件夹复制到目标文件夹。我检查了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"
暂停
谢谢!
答案 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!"
) 暂停