中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎么写出这样的批处理..谢谢
作者:
标题: 怎么写出这样的批处理..谢谢 上一主题 | 下一主题
gslingyun
初级用户





积分 26
发帖 9
注册 2006-6-28
状态 离线
『楼 主』:  怎么写出这样的批处理..谢谢

我想在E盘只能保留一个NET文件夹.除此文件夹之外的文件夹及文件全删除.而且不能改变NET这个文件夹的属性.
这样的批处理怎么写.谢谢指点

2006-6-28 13:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 2 楼』:  

简单介绍两种方法:
    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博大精深,实现楼主的目的当然也不止这两种方法,还可以利用特殊文件,目录名,目录特殊属性等等多种方法,期待楼下的来发掘。

   此帖被 +2 点积分    点击查看详情   


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





积分 26
发帖 9
注册 2006-6-28
状态 离线
『第 3 楼』:  嗯..测试过了.



2006-6-28 16:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gslingyun
初级用户





积分 26
发帖 9
注册 2006-6-28
状态 离线
『第 4 楼』:  嗯..测试过了.

方法1很好用..方法2不是我要的那种.因为它会删除NET这个文件夹里的文件但不删除文件夹.非常感谢你的技术支持..学习了..

2006-6-28 16:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gslingyun
初级用户





积分 26
发帖 9
注册 2006-6-28
状态 离线
『第 5 楼』:  真是高手呀,...收我做徒弟吧,我的QQ:85088205



2006-6-28 16:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qq82015930
中级用户




积分 235
发帖 109
注册 2006-8-24
状态 离线
『第 6 楼』:  在请教一下,如果要保留多个文件夹及子目录文件该怎么办

知道的告诉我一下 。QICQ:82015930

2006-8-31 03:11
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (82015930)  编辑帖子  回复  引用回复
yanzhong
新手上路





积分 18
发帖 7
注册 2006-9-1
状态 离线
『第 7 楼』:  

谢谢,我也学到一招

2006-9-1 21:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
kennyfan
中级用户




积分 259
发帖 112
注册 2006-9-18
状态 离线
『第 8 楼』:  

呵呵,不错.我是来顶的!~

2006-9-19 04:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 9 楼』:  

做个删除列表?

2006-9-19 08:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
uime
初级用户





积分 70
发帖 27
注册 2006-9-19
来自 河南
状态 离线
『第 10 楼』:  

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 ]

2006-9-20 05:33
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 11 楼』:  

哈哈~ 学了两个新命令
pushd
popd



业精于勤而荒于嬉,形成于思而毁于随。
2006-9-20 10:09
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: