楼 主
请教:如何批量删除一个文件夹里的同一后缀名的文件
发表于 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'>"
论坛跳转: