如何用cmd命令复制不同文件夹下的同一类文件

看到这个回答:
最佳答案
@echo off
for /f %%i in ("*.abc") do xcopy %%i d:\abs\ /y
pause

不懂呐, f i 是什么意思

整句就是 搜索 当前目录 下的abc类型的文件形成一个 文件集合 ,对该集合中的每个文件 执行命令复制到 D:\abs目录中
由前至后
1、for对一组文件中的每一个文件执行某个特定命令,可以在cmd中输入 FOR /? 看到其详细的帮助说明,看完应该就明白这句话的意思了。
2、/F 它是FOR命令的一个扩展,加上/F后FOR就会对后面的.abc文件集合中的每一个文件进行处理
3、%%i 表示变量,在FOR处理.abc文件集合中的每一个文件时暂时替代文件,方便后面的命令引用每个文件
4、 ("*.abc") 表示同一种文件类型的文件集合,比如说abc为txt时,就表示txt文本文件的一个集合
5、do就是执行后面的命令
6、xcopy %%i d:\abs\ /y 表示复制%%i暂时代表的文件到D:\abs目录下追问

这条命令可以操作子目录么?
现在是目录 A 下面有子目录 a1 a2 a3 ……,我要做的是吧这些子目录里的文件复制到一个文件夹B中。

追答

不行,它只对应当前目录,提示“此时不应有%%i 是因为这是在批处理中运行,如果直接在CMD命令行中就应该把 %%i 改为 %i

在命令提示符中运行以下
pushd "c:\users\lyt2011\documents\mp3 voice\"
for /f %i in ('dir *.mp3 /s /b') do xcopy "%i" d:\mp3\ /y
popd

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-09
for命令帮助可用for /?查看,有对/f参数的说明
%%i是批处理文件中使用到的一个变量.追问

我直接问吧:
我在 c:\users\lyt2011\documents\mp3 voice\ 下面有a到z的文件夹,里面都是MP3文件。现在我要把他们统一复制到 d:\MP3\
能帮我写一下么?

追答

FOR /R "c:\users\lyt2011\documents\mp3 voice\" %%i IN ("*.mp3") do copy %%i d:\mp3\

追问

不行啊,提示“此时不应有%%i”

追答

直接运行:
FOR /R "c:\users\lyt2011\documents\mp3 voice\" %i IN ("*.mp3") do copy %i d:\mp3\

保存为BAT:
FOR /R "c:\users\lyt2011\documents\mp3 voice\" %%i IN ("*.mp3") do copy %%i d:\mp3\

追问

”系统找不到指定文件“
我确定目录是对的啊,复制到地址栏可以正确打开目录。

追答

FOR /R "c:\users\lyt2011\documents\mp3 voice\" %i IN ("*.mp3") do copy "%i" d:\mp3\
可能是路径中有空格的原因,加引号试试,注意,上面的语句已在后面的%i处加引号,不行的话再追问

追问

一打开,窗口就关闭了

追答

FOR /R "c:\users\lyt2011\documents\mp3 voice\" %%i IN ("*.mp3") do copy "%%i" d:\mp3\
pause
以上保存为BAT再双击执行.
窗口关闭说明执行完了.

追问

可以了,哈哈。。感谢!
不过上一次应该也不是执行完了,文件很多。

本回答被提问者采纳
相似回答