Board logo

标题: [其他] 如何用批处理判断文件的扩展名并复制到指定文件夹? [打印本页]

作者: smallbear    时间: 2009-12-10 18:31     标题: 如何用批处理判断文件的扩展名并复制到指定文件夹?

小弟想请教各位高手,如何用一个批处理自动判断文件的扩展名,并将其复制到指定文件夹?
例如:我有三个文件夹,“图片”,“文档”,“影音”。
我想把任意文件拖到该批处理文件上,该批处理就会根据文件的扩展名,如果是rmvb,rm,则将其复制到“影音”文件夹。如果是jpg,bmp,则复制到“图片”文件夹。如果是xls,doc,pdf则复制到“文档”文件夹。

谢谢。
作者: pumahxh    时间: 2009-12-10 20:44     标题: LZ试试这个方法吧

我也是初学,用下这个代码吧。文件路径根据你实际情况来,这里指定为c:\。有不明白的再问
  1. @echo off
  2. set "dot=%~x1"
  3. echo %dot%|findstr/i "rmvb rm"&&copy %1 c:\yy
  4. echo %dot%|findstr/i "jpg bmp"&&copy %1 c:\pit
  5. echo %dot%|findstr/i "xls doc pdf"&&copy %1 c:\doc
  6. pause
复制代码

[ 本帖最后由 pumahxh 于 2009-12-10 20:51 编辑 ]
作者: bluewing009    时间: 2009-12-10 22:04     标题: 回复 2楼 的帖子

问: 如果是 123rm.rm  和123rm.jpg  呢?
还有  记得文件夹后面有个“\”的  即c:\pit\

[ 本帖最后由 bluewing009 于 2009-12-10 22:13 编辑 ]
作者: pumahxh    时间: 2009-12-10 22:18     标题: 回复3楼

请问后缀名为.rm和.jpg的文件都复制到同一个文件夹下吗,如果是,只要在findstr “”的引号中添加这两个后缀名就可以了,详细用法请查看findstr/?

本代码一次只能拖一个文件。

回答第二个疑问:你可以自己试下代码,最后加不加"\"都可以

[ 本帖最后由 pumahxh 于 2009-12-10 22:24 编辑 ]
作者: zqz0012005    时间: 2009-12-10 23:06     标题: 回复 3楼 的帖子

2楼代码注意加上适当的if和goto提高效率
findstr /i /e 或者 findstr /ie 或者在字符串中每个单词后面都加$

如果文件夹不存在:没有末尾的\时copy会报错,有则将源文件复制为该名称的副本。总之都不能达到正确目的。
如果文件夹存在,加不加都正确。
作者: pumahxh    时间: 2009-12-11 13:20     标题: 谢谢版主指教!

感谢指导!明白了在此加不加“\”的意义。

但是你提出加if和goto语句增加效率,请问如何修改代码,因为我觉得题目简单,按照已知要求,感觉只能这么写,加IF反而感觉多余。请明示下。

还有“findstr /i /e 或者 findstr /ie 或者在字符串中每个单词后面都加$”,为什么,有什么好处?
作者: bluewing009    时间: 2009-12-13 20:24     标题: 回复 4楼 的帖子

如果是 从后向前读,就不必考虑我说的那种情况了
作者: smallbear    时间: 2009-12-14 17:55

谢谢各位的热心帮助




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