Board logo

标题: (已结)如何刪除根目錄下 除了特定資料夾外的所有檔案 [打印本页]

作者: dosfroum     时间: 2005-9-28 20:19    标题: (已结)如何刪除根目錄下 除了特定資料夾外的所有檔案

請問DOS下有沒有刪除根目錄下 除了特定資料夾外的所有檔案

如:E:\下 有 資料夾a 資料夾b 資料夾c 檔案a 檔案b 檔案c
但是我只要保留"資料夾a"其他全部刪除
請問批次檔要怎麻寫 謝謝!

[ Last edited by willsort on 2005-10-11 at 00:57 ]
作者: chenhui530     时间: 2005-9-30 14:53
请问使用环境
作者: dosfroum     时间: 2005-10-1 01:50
windows 2000 謝謝!!
作者: 无奈何     时间: 2005-10-1 15:43
试试这个:
for /f "delims=" %i in ('dir /ad /b ^| findstr /v "資料夾a"') do echo "%i" ||echo del "%i"
此操作有危险。实际应用请将
第一个echo,替换为:rd /s /q
第二个echo,替换为:del /f
如批处理下将所有 %i 替换为:%%i

[ Last edited by 无奈何 on 2005-10-1 at 15:58 ]
作者: dosfroum     时间: 2005-10-1 22:46
謝 明天去公司試看看 不敢在家裡的電腦用
作者: chujiafu     时间: 2005-10-2 07:38
不解楼主的问题:①Dos下(除非你使用了中文操作系统)进入中文目录不易,更别说删除了;②既然是在Dos下删除目录,又何来的Win2000环境?
作者: dosfroum     时间: 2005-10-2 11:46
1. 我只保留特定目錄 特定目錄不一定為中文
2.難道 2000就沒有dos嗎? 或許你認為 c大於命令提示字元不是dos

那妳認為何為dos 純dos嗎? 純dos才算dos嗎 那pc-dos ms-dos那個才算dos
那多才開機呢用到2000的ntlsdr引導 那它還算dos嗎?
妳知道dos的全名是什麼嗎?
"Disk Operation System"翻成中文叫"磁碟作業系統"
那window 2000是什嗎 nt架構(New Technology)
難道它就不能執行dos命令嗎?
要是妳有疑問 那我就有更多的疑問
作者: willsort     时间: 2005-10-7 17:40
Re dosfroum:

      关于DOS、命令行、纯DOS、CMD、COMMAND之间错综关系本论坛以讨论了不少,你可以搜索看看。至于主楼的问题,在NT CMD下比较简单,除了无奈何兄的方法外,也可以考虑下面的方案:

for /f "delims=" %f in ('dir /a /b') do @if not "%f"=="資料夾a" rd /s /q "%f" 2>nul || del /f /a "%f" 2>nul
作者: 不得不爱     时间: 2005-10-7 19:53
为何不用 ctrl+a ctrl+鼠标左键点"資料夾a" shift+del 刪除根目錄下 除了特定資料夾外的所有檔案!
作者: Michael     时间: 2005-10-7 21:55
可以用比较笨的方法,只给不想删除的文件置上只读属性,然后del *.*

[ Last edited by Michael on 2005-10-7 at 21:56 ]
作者: willsort     时间: 2005-10-7 22:45
Re qwe1234567:

      命令行的一大优点是它可以写进批处理中,而这个批处理可能会多次的在不同时间不同场合下运行,而如果换作手工操作,工作量也许会很大。

Re Michael:

      楼住不仅要求删除文件,还包括文件夹,所以需要进行进一步的筛选和控制。在纯DOS下的纯批处理下,倒也并非无法实现,只是方案会更复杂一些。当然,某些辅助性工具,会让这个工作变得很简单,这就是自己编程自己使用和他人编程我来使用的乐趣不同了。
作者: 不得不爱     时间: 2005-10-8 17:46
难道按几下键还没有批处理简单、安全吗?
作者: JonePeng     时间: 2005-10-8 19:28


  Quote:
Originally posted by qwe1234567 at 2005-10-8 17:46:
难道按几下键还没有批处理简单、安全吗?

你说的有道理,但楼主要求在DOS下。
作者: 不得不爱     时间: 2005-10-8 20:42
但是我觉得无此必要!
作者: willsort     时间: 2005-10-8 21:16
Re qwe1234567:

      你仍然没有理解我的本意。我的意思,命令行代码可以写进批处理中,而只需要点击一下执行即可完成任务,或者加入到自动运行机制中自动运行。而此时如果有成百上千台系统需要进行此项操作,或者某系统需要频繁进行此操作,用鼠标选择再手动删除就未免过于繁琐和机械了。当然,命令行与鼠标操作各有自己的优缺点,正如GUI(Graphic User Interface)界面与CLI(Command Line Interface)界面一样,一味扬此弃彼也未免失之偏颇了。
作者: 不得不爱     时间: 2005-10-9 08:33
我明白你的意思!
作者: dosfroum     时间: 2005-10-9 20:55
我就是這個意思@@a
因為 我總不能隨時隨地去按那幾個鍵
而且要是同時有許多來電腦需要刪除文件時 總部能叫我一個一個去點吧
不過我還沒搞定這個問題 努力中
作者: 不得不爱     时间: 2005-10-10 09:58
为什么我用了4 楼批处理命令无效,我用了8 楼批处理命令有效!将以下命令写人A.BAT即可!
for /f "delims=" %%f in ('dir /a /b') do @if not "%%f"=="資料夾a" rd /s /q "%%f" 2>nul || del /f /a "%%f" 2>nul
作者: 无奈何     时间: 2005-10-10 11:35


  Quote:
Originally posted by qwe1234567 at 2005-10-10 09:58:
为什么我用了4 楼批处理命令无效,我用了8 楼批处理命令有效!将以下命令写人A.BAT即可!
for /f "delims=" %%f in ('dir /a /b') do @if not "%%f"= ...

为了防止误操作,只是输出显示,事实上还有一个不符要求的地方,要更改一下dir 参数,当初没看仔细。
for /f "delims=" %i in ('dir /a /b ^| findstr /v "資料夾a"') do rd /s /q "%i" ||del /f "%i"

作者: 不得不爱     时间: 2005-10-10 14:08
怪不得,原来多了一个D!