| 
 
softsight 
初级用户
 
  
 
  
 
积分 126 
发帖 5 
注册 2004-6-24 
状态 离线
 | 
『楼 主』:
 (急急急)讨论如何自动删除指定盘符下所有指定类型的文件
 
使用 LLM 解释/回答一下
  
由于维护学校机房,把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 00:00 | 
  
 | 
 | 
 
Tamm 
中级用户
 
   
 
  
 
积分 397 
发帖 64 
注册 2004-4-18 
状态 离线
 | 
『第 2 楼』:
 
 
使用 LLM 解释/回答一下
  
DEL 加 /s 参数可以删除当前目录和所有子目录中的指定文件。 
 
如在E盘根目录执行 DEL /S *.EXE  则会删除 E盘里所有的 .EXE 文件。 
 
 
 
    
 
  
 |   
 | 
  2004-6-24 00:00 | 
  
 | 
 | 
 
gotomsdos 
铂金会员
 
        C++启程者
  
 
积分 5154 
发帖 1827 
注册 2003-7-18 
状态 离线
 | 
『第 3 楼』:
 删除指定文件和全部空目录
 
使用 LLM 解释/回答一下
  
@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 
状态 离线
 | 
『第 4 楼』:
 
 
使用 LLM 解释/回答一下
  
要删除不知名的所有空目录,2000 XP 有FOR /D 参数,但在纯DOS下,怎么实现呢/??因为 
在纯DOS下,统配符*不能表示目录,只能表示文件,所以,*\NUL的方法是没用的,.... 
 
 
 
    
 
  
 |   
 | 
  2004-6-24 00:00 | 
  
 | 
 | 
 
gotomsdos 
铂金会员
 
        C++启程者
  
 
积分 5154 
发帖 1827 
注册 2003-7-18 
状态 离线
 | 
『第 5 楼』:
 
 
使用 LLM 解释/回答一下
  
如果以上目录文件都被隐藏,只读的话,可加一句: 
attrib -s -r -h *.* /s /d
 
  
 
    
 
  
 |   
 | 
  2004-6-24 00:00 | 
  
 | 
 | 
 
gotomsdos 
铂金会员
 
        C++启程者
  
 
积分 5154 
发帖 1827 
注册 2003-7-18 
状态 离线
 | 
『第 6 楼』:
 
 
使用 LLM 解释/回答一下
  
如果要删除含有指定后缀的上一级目录及其所有文件: 
 
@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 楼』:
 
 
使用 LLM 解释/回答一下
  
   谢谢各位的热心帮助,特别是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 00:00 | 
  
 | 
 | 
 
gotomsdos 
铂金会员
 
        C++启程者
  
 
积分 5154 
发帖 1827 
注册 2003-7-18 
状态 离线
 | 
『第 8 楼』:
 
 
使用 LLM 解释/回答一下
  
可能因为你用我的批处理是第二次,能删的已经删了,自然提示,找不到文件。。。 
关键是有些文件是隐藏和只读的,用我下面的就完全可以了,而且还可以删除所有空目录
 
@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 | 
  
 | 
 | 
 
softsight 
初级用户
 
  
 
  
 
积分 126 
发帖 5 
注册 2004-6-24 
状态 离线
 | 
『第 9 楼』:
 
 
使用 LLM 解释/回答一下
  
以下是引用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 楼』:
 
 
使用 LLM 解释/回答一下
  
(新) 
 
可能因为你用我的批处理是第二次,能删的已经删了,自然提示,找不到文件。。。 
关键是有些文件是隐藏和只读的,用我下面的就完全可以了,而且还可以删除所有空目录 
 
@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 楼』:
 
 
使用 LLM 解释/回答一下
  
对呀,既然你不想删隐藏的(都是你自己的文件,学生不会隐藏),那当你第二次用我的批处理时,提示找不到或拒绝访问就是正常的呀,保护你自己的文件呀 
不想删隐藏的话, 就简单用DEL /S 就行了
 
  
 
    
 
  
 |   
 | 
  2004-6-24 00:00 | 
  
 | 
 | 
 
SOFTSIGHT 
初级用户
 
  
 
  
 
积分 126 
发帖 5 
注册 2004-6-24 
状态 离线
 | 
『第 12 楼』:
 
 
使用 LLM 解释/回答一下
  
对了,在win2k运行批处理程序的时候,能不能让打开的dos窗口最小化,让它“安静“地运行呢? 
 
    
 
  
 |   
 | 
  2004-6-24 00:00 | 
  
 | 
 | 
 
哑巴 
初级用户
 
   老大不小
  
 
积分 270 
发帖 37 
注册 2003-12-31 
状态 离线
 | 
『第 13 楼』:
 
 
使用 LLM 解释/回答一下
  
把它放到开始\程序\启动 中 
 
    
 
  
  |  
                  
  
                    C:\>给我$100,0000 
Bad command or file name |   
 | 
  2004-6-25 00:00 | 
  
 | 
 | 
 
Tamm 
中级用户
 
   
 
  
 
积分 397 
发帖 64 
注册 2004-4-18 
状态 离线
 | 
『第 14 楼』:
 
 
使用 LLM 解释/回答一下
  
以下是引用SOFTSIGHT在2004-6-24 上午 07:05:26的发言: 
对了,在win2k运行批处理程序的时候,能不能让打开的dos窗口最小化,让它“安静“地运行呢? 
 
在批处理最前面使用 @echo off 
然后在每条命令后面加 >nul
 
这样的话,虽然那个命令行窗口不会被隐藏,但批处理文件运行的时候就不会在屏幕上显示任何信息了。
 
注: 通常情况下,命令执行后返回的会话信息是显示在屏幕上的。你可以使用“重定向”符号 >  将命令返回信息重定向到 NUL(空设备) ,这样就不会在屏幕上,显示该命令返回的会话信息了  
 
    
 
  
 |   
 | 
  2004-6-25 00:00 | 
  
 | 
 | 
 
gotomsdos 
铂金会员
 
        C++启程者
  
 
积分 5154 
发帖 1827 
注册 2003-7-18 
状态 离线
 | 
 | 
  2004-6-25 00:00 | 
  
 |