Board logo

标题: 请教:如何批量删除一个文件夹里的同一后缀名的文件 [打印本页]

作者: dows     时间: 2006-6-13 23:12    标题: 请教:如何批量删除一个文件夹里的同一后缀名的文件

请教一下:如何批量删除一个文件夹里的同一后缀名的文件(如.gif)?
              还有如何批量将光驱的盘里的文件夹里同一后缀名的文件(如.mp3)复制到硬盘里的一个文件夹里?

[ Last edited by willsort on 2006-6-14 at 16:40 ]
作者: namejm     时间: 2006-6-13 23:56
  批量删除某文件夹下同一后缀名的文件:
  
@for %%i in (*.gif) do del %%i
  此代码只能删除位于当前目录下的文件,而不能删除子文件夹中的文件。如果要不加确认,请在del后加上静默参数 /q。

  同样的道理,复制的代码是:
  
@for %%i in (*.mp3) do copy %%i Directory

作者: Climbing     时间: 2006-6-14 01:07
晕,为什么不 del *.gif,写批处理写习惯了,却忘了通配符更简单。这叫偏执,嘿嘿。

或者copy *.mp3 todir /y
作者: dows     时间: 2006-6-14 10:27
谢谢上两楼的指教 。
删除的用两个都行 (@for %%i in (*.gif) do del %%i,或 del *.gif),但是复制那个,怎么总不能把bat文件放到光盘里吧?
另外再问一下:怎么把删除的那 个bat(名为del.bat)移动到一个文件夹里的包含的不同文件夹里 ?

[ Last edited by dows on 2006-6-14 at 10:55 ]
作者: namejm     时间: 2006-6-14 13:51
  Climbing大哥说的是,用批处理习惯了,反倒忽视了最简单的办法
 
  虽然不能把批处理放到光盘里去,但是可以用 cd /d 跳转到光盘指定目录,然后用copy命令就可以了,此时,bat可以放在任意目录下。要实现更多的功能,可以参照以下的代码进行修改。

  如果要删除某个文件夹下所有的某类文件(包括子目录中的),可以用以下代码来实现,为了说明路径带空格需要用引号括起来这个细节,文件名都带了空格:
@for /f %%i in ('dir /a /b s "D:\t est" ^|find ".mp3"') do copy /y %%i "D:\D irectory"

作者: dows     时间: 2006-6-14 17:31


  Quote:
Originally posted by namejm at 2006-6-14 13:51:
  Climbing大哥说的是,用批处理习惯了,反倒忽视了最简单的办法:P
 
  虽然不能把批处理放到光盘里去,但是可以用 cd /d 跳转到光盘指定目彠...

我是菜鸟一个,不大懂楼上所说的,能否解释一下,谢谢!!!!
@for /f %%i in ('dir /a /b s "D:\t est" ^|find ".mp3"') do copy /y %%i "D:\D irectory"

括号里的是什么意思啊??

具体的说吧:
1  、 我想把F盘里 tu pian 文件夹里各个文件夹里的gif文件删除
2  、 把H盘(光驱盘)里的某个文件夹(如Beyond)里的mp3文件复制到E盘  Beyond里去
作者: namejm     时间: 2006-6-14 17:55
  刚才受willsort的提醒,以上代码中find ".mp3"语句可能会删掉形如test.mp3.lrc的文件,所以建议楼主不要采用以上代码。又翻看了一下for命令,发现了一个更好的办法。考虑到路径含有空格,并且文件名也可能含有空格,采用以下代码不至于漏删(批处理删文件有风险,操作须谨慎):
@echo off
for /r "f:\tu pian" %%i in (*.gif) do del /y "%%i"
explorer "f:\tu pian"
  复制文件的代码如下:
@echo off
cd /d H:\Beyond
md E:\Beyond
copy /y "*.mp3" E:\Beyond
explorer E:\Beyond

作者: willsort     时间: 2006-6-14 17:57
Re dows:

      既然缺乏批处理的基础知识,那么建议在运行中输入:%systemroot%\help\ntcmds.chm 熟悉一下批处理和命令行。

      现在,向你推荐另外一个简单的方法:

      在资源浏览器中,右键单击 tu pian 或者 Beyond 文件夹选择“搜索”,然后在文件名框中输入 *.gif ,点击“搜索”,待完成后,Ctrl+A选择所有搜索结果,然后可以Del删除,Shift+Del彻底删除,Ctrl+C/Ctrl+V复制,Ctrl+X/Ctrl+V复制。
作者: namejm     时间: 2006-6-14 18:06
  现在对@for /f %%i in ('dir /a /b s "D:\t est" ^|find ".mp3"') do copy /y %%i "D:\D irectory"作个解释:
  @ 为隐藏命令,隐藏它之后的命令在屏幕上的显示;
  for 对一组文件中的每一个文件都执行指定的命令。如果用在批处理中,变量要用双百分号%%引用;如果在CMD中使用,只需一个%就可以了;
  | 管道符号,可以把它之前的命令的输出内容作为它之后的命令的输入内容。
  
  这段代码的过程大致是这样的:
  先用dir命令把指定文件夹下的所有文件按照大小罗列出来,然后用find命令把dir的结果里文件名中含有.mp3字符串的文件提取出来,最后复制到指定文件夹下。
作者: electronixtar     时间: 2006-6-14 18:12


  Quote:
那么建议在运行中输入:%systemroot%\help\ntcmds.chm

来个最简单的:
hh ntcmds.chm