中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-01 17:00
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教:如何批量删除一个文件夹里的同一后缀名的文件 查看 3,375 回复 9
楼 主 请教:如何批量删除一个文件夹里的同一后缀名的文件 发表于 2006-06-13 23:12 ·  中国 江苏 南京 电信
初级用户
积分 32
发帖 12
注册 2006-06-10 14:20
20年会员
UID 56834
状态 离线
请教一下:如何批量删除一个文件夹里的同一后缀名的文件(如.gif)?
还有如何批量将光驱的盘里的文件夹里同一后缀名的文件(如.mp3)复制到硬盘里的一个文件夹里?

[ Last edited by willsort on 2006-6-14 at 16:40 ]
2 发表于 2006-06-13 23:56 ·  中国 四川 成都 鹏博士宽带
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  批量删除某文件夹下同一后缀名的文件:
  
@for %%i in (*.gif) do del %%i

  此代码只能删除位于当前目录下的文件,而不能删除子文件夹中的文件。如果要不加确认,请在del后加上静默参数 /q。

  同样的道理,复制的代码是:
  
@for %%i in (*.mp3) do copy %%i Directory
3 发表于 2006-06-14 01:07 ·  中国 河北 保定 移动
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
晕,为什么不 del *.gif,写批处理写习惯了,却忘了通配符更简单。这叫偏执,嘿嘿。

或者copy *.mp3 todir /y
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
4 发表于 2006-06-14 10:27 ·  中国 江苏 南京 电信
初级用户
积分 32
发帖 12
注册 2006-06-10 14:20
20年会员
UID 56834
状态 离线
谢谢上两楼的指教 。
删除的用两个都行 (@for %%i in (*.gif) do del %%i,或 del *.gif),但是复制那个,怎么总不能把bat文件放到光盘里吧?
另外再问一下:怎么把删除的那 个bat(名为del.bat)移动到一个文件夹里的包含的不同文件夹里 ?

[ Last edited by dows on 2006-6-14 at 10:55 ]
5 发表于 2006-06-14 13:51 ·  中国 四川 成都 鹏博士宽带
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  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"
6 发表于 2006-06-14 17:31 ·  中国 江苏 南京 电信
初级用户
积分 32
发帖 12
注册 2006-06-10 14:20
20年会员
UID 56834
状态 离线
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里去
7 发表于 2006-06-14 17:55 ·  中国 四川 雅安 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  刚才受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
8 发表于 2006-06-14 17:57 ·  中国 山西 太原 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re dows:

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

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

在资源浏览器中,右键单击 tu pian 或者 Beyond 文件夹选择“搜索”,然后在文件名框中输入 *.gif ,点击“搜索”,待完成后,Ctrl+A选择所有搜索结果,然后可以Del删除,Shift+Del彻底删除,Ctrl+C/Ctrl+V复制,Ctrl+X/Ctrl+V复制。
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
9 发表于 2006-06-14 18:06 ·  中国 四川 雅安 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  现在对@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字符串的文件提取出来,最后复制到指定文件夹下。
10 发表于 2006-06-14 18:12 ·  IANA 局域网IP(Private-Use)
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线

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


来个最简单的:


hh ntcmds.chm

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
论坛跳转: