中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » (急急急)讨论如何自动删除指定盘符下所有指定类型的文件
« [1] [2] »
作者:
标题: (急急急)讨论如何自动删除指定盘符下所有指定类型的文件 上一主题 | 下一主题
softsight
初级用户




积分 126
发帖 5
注册 2004-6-24
状态 离线
『楼 主』:  (急急急)讨论如何自动删除指定盘符下所有指定类型的文件

由于维护学校机房,把e:盘留给学生存放文件,但学生喜欢把一些小游戏下载下来放在
e:盘,主要是swf,zip,rar,exe文件,我想编写一行命令开机时候自动删除e:盘下的这些文件,怎么编写呢?学生机用的是win2000 pro的系统。
在win2000 pro下编写一个批处理文件,让系统启动时自动执行。
要求:自动删除e:盘下根目录和子目录中的mp3,wave,exe,swf,zip,rar文件

-------------------------------------------------------------------------
经过尝试,我发现for命令可以实现一些:如下:
for /r E:\ %c in (*.exe,*.swf,*.zip,*.rar) do del %c
但学生的游戏老是放在一些有中文名字的目录中如“复件 游戏“等古怪的目录,删除不了这类文件。
请教各位dos高手!!!



[此贴子已经被作者于2004-6-24 下午 12:08:36编辑过]




2004-6-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Tamm
中级用户




积分 397
发帖 64
注册 2004-4-18
状态 离线
『第 2 楼』:  

DEL 加 /s 参数可以删除当前目录和所有子目录中的指定文件。

如在E盘根目录执行 DEL /S *.EXE  则会删除 E盘里所有的 .EXE 文件。



2004-6-24 00:00
查看资料  发送邮件  发短消息 网志  OICQ (136587)  编辑帖子  回复  引用回复
gotomsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 3 楼』:  删除指定文件和全部空目录

@echo off
e:
cd\

echo 以下删除指定文件
del *.mp3 *.wav *.swf *.exe *.zip *.rar  /a /s /f /q

echo 以下删除所有空目录
:again
for /d /r %%1 in (*) do if exist %%1\nul (rd %%1&&goto again) else goto end

:end

以上均经过测试,目录为“复件 游戏”的都可以的

(已修改)


















[此贴子已经被作者于2004-6-24 下午 06:11:51编辑过]




2004-6-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gotomsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 4 楼』:  

要删除不知名的所有空目录,2000 XP 有FOR /D 参数,但在纯DOS下,怎么实现呢/??因为
在纯DOS下,统配符*不能表示目录,只能表示文件,所以,*\NUL的方法是没用的,....



2004-6-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gotomsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 5 楼』:  

如果以上目录文件都被隐藏,只读的话,可加一句:

attrib -s -r -h *.* /s /d


[此贴子已经被作者于2004-6-24 下午 06:06:58编辑过]




2004-6-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gotomsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 6 楼』:  

如果要删除含有指定后缀的上一级目录及其所有文件:

@echo off
e:
cd\
attrib -s -r -h *.* /s /d
for /d /r %%1 in (*) do if exist %%1\*.mp3 rd %%1 /s /q
for /d /r %%1 in (*) do if exist %%1\*.swf rd %%1 /s /q
for /d /r %%1 in (*) do if exist %%1\*.exe rd %%1 /s /q
for /d /r %%1 in (*) do if exist %%1\*.zip rd %%1 /s /q
for /d /r %%1 in (*) do if exist %%1\*.rar rd %%1 /s /q




2004-6-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
softsight
初级用户




积分 126
发帖 5
注册 2004-6-24
状态 离线
『第 7 楼』:  

   谢谢各位的热心帮助,特别是Tamm 和gotomsdos 两位。
   经过我试验Tamm兄的方法比较现实简单,当然不能删除已经清空了的目录,这到没什么,基本上del /s *.已经能删除所有文件了,不过仍然有个别的文件,删除时提示“系统拒绝访问“,不知道为何(该程序未运行)。
根据tamm的建议我写了这个批处理:
e:
cd\
del /s *.exe
del /s *.swf
del /s *.zip
del /s *.rar
del /s *.mp3
该程序已经删除学生机上e:盘上所有的非法程序了。
    而gotomsdos的批处理程序,似乎不太起作用,一个文件也没被删除,系统提示“系统拒绝访问”或者“找不到指定的文件或者文件夹”或者“该文件不存在”,不知道哪里出了问题。虚心请教。



[此贴子已经被作者于2004-6-24 下午 06:10:59编辑过]




2004-6-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gotomsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 8 楼』:  

可能因为你用我的批处理是第二次,能删的已经删了,自然提示,找不到文件。。。
关键是有些文件是隐藏和只读的,用我下面的就完全可以了,而且还可以删除所有空目录

@echo off
e:
cd\

echo 以下删除指定文件
del *.mp3 *.wav *.swf *.exe *.zip *.rar  /a /s /f /q

echo 以下删除所有空目录
:again
for /d /r %%1 in (*) do if exist %%1\nul (rd %%1&&goto again) else goto end

:end

以上均经过测试,目录为“复件 游戏”的都可以的








[此贴子已经被作者于2004-6-24 下午 06:17:06编辑过]




2004-6-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
softsight
初级用户




积分 126
发帖 5
注册 2004-6-24
状态 离线
『第 9 楼』:  



  Quote:
以下是引用gotomsdos在2004-6-24 上午 06:00:46的发言:
如果要删除含有指定后缀的上一级目录及其所有文件:

@echo off
e:
cd\
attrib -s -r -h *.* /s /d
for /d /r %%1 in (*) do if exist %%1\*.mp3 rd %%1 /s /q
for /d /r %%1 in (*) do if exist %%1\*.swf rd %%1 /s /q
for /d /r %%1 in (*) do if exist %%1\*.exe rd %%1 /s /q
for /d /r %%1 in (*) do if exist %%1\*.zip rd %%1 /s /q
for /d /r %%1 in (*) do if exist %%1\*.rar rd %%1 /s /q



没有必要删除隐藏文件吧,我的一些文件都隐藏在下面。学生还不知道隐藏。

2004-6-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gotomsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 10 楼』:  

(新)

可能因为你用我的批处理是第二次,能删的已经删了,自然提示,找不到文件。。。
关键是有些文件是隐藏和只读的,用我下面的就完全可以了,而且还可以删除所有空目录

@echo off
e:
cd\

echo 以下删除指定文件
del *.mp3 *.wav *.swf *.exe *.zip *.rar  /a /s /f /q

echo 以下删除所有空目录
:again
for /d /r %%1 in (*) do if exist %%1\nul (rd %%1&&goto again) else goto end

:end

以上均经过测试,目录为“复件 游戏”的都可以的



2004-6-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gotomsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 11 楼』:  

对呀,既然你不想删隐藏的(都是你自己的文件,学生不会隐藏),那当你第二次用我的批处理时,提示找不到或拒绝访问就是正常的呀,保护你自己的文件呀
不想删隐藏的话, 就简单用DEL /S 就行了




[此贴子已经被作者于2004-6-24 下午 06:29:57编辑过]




2004-6-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
SOFTSIGHT
初级用户




积分 126
发帖 5
注册 2004-6-24
状态 离线
『第 12 楼』:  

对了,在win2k运行批处理程序的时候,能不能让打开的dos窗口最小化,让它“安静“地运行呢?

2004-6-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
哑巴
初级用户

老大不小


积分 270
发帖 37
注册 2003-12-31
状态 离线
『第 13 楼』:  

把它放到开始\程序\启动 中



C:\>给我$100,0000
Bad command or file name
2004-6-25 00:00
查看资料  发送邮件  发短消息 网志  OICQ (12333705)  编辑帖子  回复  引用回复
Tamm
中级用户




积分 397
发帖 64
注册 2004-4-18
状态 离线
『第 14 楼』:  



  Quote:
以下是引用SOFTSIGHT在2004-6-24 上午 07:05:26的发言:
对了,在win2k运行批处理程序的时候,能不能让打开的dos窗口最小化,让它“安静“地运行呢?

在批处理最前面使用 @echo off
然后在每条命令后面加 >nul

这样的话,虽然那个命令行窗口不会被隐藏,但批处理文件运行的时候就不会在屏幕上显示任何信息了。

注: 通常情况下,命令执行后返回的会话信息是显示在屏幕上的。你可以使用“重定向”符号 >  将命令返回信息重定向到 NUL(空设备) ,这样就不会在屏幕上,显示该命令返回的会话信息了

2004-6-25 00:00
查看资料  发送邮件  发短消息 网志  OICQ (136587)  编辑帖子  回复  引用回复
gotomsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 15 楼』:  

以上两位的方法都没用的
照样出现窗口


2004-6-25 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: