Board logo

标题: [文件操作] 批处理怎样复制文件,并修改其扩展名? [打印本页]

作者: zhxhhyqj    时间: 2011-1-10 20:28     标题: 批处理怎样复制文件,并修改其扩展名?

我要把一个文件夹下面(包括子目录)的所有.mp3文件复制一份,并保存为.mp4文件。用批处理怎么写啊?
我写了如下一个批处理
  1. @echo off
  2. for /r "D:\TTPmusic\Temp\temp222" %%a in (*.mp3) do (copy "%%a" "%%~na.mp4")
复制代码

temp222下面还有个111文件夹。
发现只有temp222文件夹下面的.mp3文件生成了.mp4文件。但是子目录都没变,也就是111文件夹里面的.mp3没有生成一份.mp4文件。求各位大哥大姐们帮忙看看!

[ 本帖最后由 zhxhhyqj 于 2011-1-10 20:34 编辑 ]
作者: hanyeguxing    时间: 2011-1-10 20:35

楼主这样的代码要所有目录内不能有重名文件,否则会覆盖:
  1. @echo off
  2. for /r "D:\TTPmusic\Temp\temp222" %%a in (*.mp3) do (
  3. echo 正在处理%%a
  4. copy "%%a" "%%~na.mp4"
  5. )
  6. pause
复制代码
使用这个代码测试:
1,是否显示了所有文件?
2,copy 是否返回错误信息?
3,是否存在同名文件?
4,是否存在隐藏属性文件?
作者: yhcbird    时间: 2011-1-10 20:48

你这样写代码应该是没错的,是不是特殊符号啊文字方面的原因。还是空格什么造成的
作者: zhxhhyqj    时间: 2011-1-10 20:52

谢谢楼上两位,我发现了,它生成的时候都生成在D:\TTPmusic\Temp\temp222目录下了,111文件夹下的MP3文件也生成在D:\TTPmusic\Temp\temp222目录下了。
我需要的是,原来在哪个文件夹下,就在相应的文件夹下面生成。请问应该怎么修改下?

[ 本帖最后由 zhxhhyqj 于 2011-1-10 21:12 编辑 ]
作者: zhxhhyqj    时间: 2011-1-10 21:11

难道没有人知道吗?
各位哥哥姐姐,这个问题很急,麻烦你们了~,恳请不吝赐教
作者: zhxhhyqj    时间: 2011-1-10 21:22

好像是都生成在批处理文件(那个.bat)所在的文件夹了。
怎么让它在对应的文件夹下生成?  是不是copy要加什么参数??
作者: hanyeguxing    时间: 2011-1-10 21:25

不修改扩展名:
  1. xcopy /cqiskrh "D:\TTPmusic\Temp\temp222\*.mp3" "指定目录"
复制代码

为什么要这样改扩展名呢?

[ 本帖最后由 hanyeguxing 于 2011-1-10 21:26 编辑 ]
作者: zhxhhyqj    时间: 2011-1-10 21:36

原帖由 hanyeguxing 于 2011-1-10 21:25 发表
不修改扩展名:xcopy /cqiskrh "D:\TTPmusic\Temp\temp222\*.mp3" "指定目录"
为什么要这样改扩展名呢?


之所以这样,是有我的原因的。

我知道下面的代码
  1. for /r %%a in (*.mp3) do ren "%%a" "%%~na.mp4"
复制代码


这样是可以改扩展名的。
但是我现在是需要复制一份,然后再改,要跟原来的文件同时存在。所以要求复制后改,希望能帮忙实现下,谢谢
作者: zhxhhyqj    时间: 2011-1-10 21:40

原帖由 hanyeguxing 于 2011-1-10 21:25 发表
不修改扩展名:xcopy /cqiskrh "D:\TTPmusic\Temp\temp222\*.mp3" "指定目录"
为什么要这样改扩展名呢?


另外,你上面的这段代码好像没起作用,指定目录我写了D:\TTPmusic\Temp\temp111\,
我是个批处理菜鸟,不太懂,还望能帮忙实现这个功能,谢谢!

[ 本帖最后由 zhxhhyqj 于 2011-1-10 21:42 编辑 ]
作者: yhcbird    时间: 2011-1-10 21:41

路径改下。或者把你上面的代码放在你要复制的文件夹里面执行都可以的
作者: hanyeguxing    时间: 2011-1-10 21:44

在原位置复制:
  1. for /r "D:\TTPmusic\Temp\temp222" %%a in (*.mp3) do copy "%%a" "%%~dpna.mp4"
复制代码

作者: zhxhhyqj    时间: 2011-1-10 21:44

原帖由 yhcbird 于 2011-1-10 21:41 发表
路径改下。或者把你上面的代码放在你要复制的文件夹里面执行都可以的

可是D:\TTPmusic\Temp\temp222下面有好几百个文件夹,不然我也不需要批处理了,直接改就可以了。
作者: zhxhhyqj    时间: 2011-1-10 21:48

原帖由 hanyeguxing 于 2011-1-10 21:44 发表
在原位置复制:for /r "D:\TTPmusic\Temp\temp222" %%a in (*.mp3) do copy "%%a" "%%~dpna.mp4"


高手~~~~,解决了,谢谢!!!!
真是太感谢了
作者: wolonga123    时间: 2011-1-11 13:59     标题: 回复 11楼 的帖子

感觉不要%%~dpna.mp4吧,用%%~pna.mp4可不可以啊
作者: mac007cn    时间: 2011-1-11 15:47

回复 14楼 的帖子

应该可以的。

[ 本帖最后由 mac007cn 于 2011-1-11 15:48 编辑 ]




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2