Board logo

标题: 怎么写出这样的批处理..谢谢 [打印本页]

作者: gslingyun     时间: 2006-6-28 13:14    标题: 怎么写出这样的批处理..谢谢

我想在E盘只能保留一个NET文件夹.除此文件夹之外的文件夹及文件全删除.而且不能改变NET这个文件夹的属性.
这样的批处理怎么写.谢谢指点
作者: 3742668     时间: 2006-6-28 14:00
简单介绍两种方法:
    1.传统的for方法:
@echo off
pushd e:\          rem 切换到e盘根目录
del /q *.*          rem 删除根目录下所有文件
for /d %%i in (*) do if /i not "%%i" == "NET" rd /s /q "%%i"   rem 如果目录不为net则删除
popd                rem 回到初始目录
2.WMIC
利用wmic,不仅出错的几率小得多,而且执行速度也不错。
wmic fsdir where "drive='e:' and filename!='NET'" call delete /NOINTERACTIVE
这一句可以删除E盘下除net以外的其他目录,不过由于测试的时候对于多级目录下的文件存在不能一次删完的情况,所以最好加上判断当前目录下是否仅有net一个目录的语句:
@echo off
pushd e:\
del /q *.*

:start
    dir /b e: | findstr /v /i "net" || goto end
    call :deldir
goto start

:deldir
    wmic fsdir where "drive='e:' and filename!='net'" call delete /NOINTERACTIVE
goto :eof

:end
    popd
CMD博大精深,实现楼主的目的当然也不止这两种方法,还可以利用特殊文件,目录名,目录特殊属性等等多种方法,期待楼下的来发掘。
作者: gslingyun     时间: 2006-6-28 16:21    标题: 嗯..测试过了.


作者: gslingyun     时间: 2006-6-28 16:25    标题: 嗯..测试过了.

方法1很好用..方法2不是我要的那种.因为它会删除NET这个文件夹里的文件但不删除文件夹.非常感谢你的技术支持..学习了..
作者: gslingyun     时间: 2006-6-28 16:35    标题: 真是高手呀,...收我做徒弟吧,我的QQ:85088205


作者: qq82015930     时间: 2006-8-31 03:11    标题: 在请教一下,如果要保留多个文件夹及子目录文件该怎么办

知道的告诉我一下 。QICQ:82015930
作者: yanzhong     时间: 2006-9-1 21:10
谢谢,我也学到一招
作者: kennyfan     时间: 2006-9-19 04:39
呵呵,不错.我是来顶的!~
作者: kcdsw     时间: 2006-9-19 08:11
做个删除列表?
作者: uime     时间: 2006-9-20 05:33
DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

  names         指定一个或数个文件或目录列表。通配符可被用来删除多个文件。如果指定了一个目录,目录中的所有文件都会被删除。

  /P            删除每一个文件之前提示确认。
  /F            强制删除只读文件。
  /S            从所有子目录删除指定文件。
  /Q            安静模式。删除全局通配符时,不要求确认。
  /A            根据属性选择要删除的文件。
  attributes      R  只读文件                     S  系统文件
                  H  隐藏文件                     A  存档文件
                  -  表示“否”的前缀

配合attrib也可以完成,不过会改变文件夹的属性

[ Last edited by uime on 2006-9-20 at 05:35 ]
作者: pengfei     时间: 2006-9-20 10:09
哈哈~ 学了两个新命令
pushd
popd