中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-01 16:55
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎么写出这样的批处理..谢谢 查看 1,917 回复 10
楼 主 怎么写出这样的批处理..谢谢 发表于 2006-06-28 13:14 ·  中国 江苏 南京 电信
初级用户
积分 26
发帖 9
注册 2006-06-28 13:10
20年会员
UID 57682
状态 离线
我想在E盘只能保留一个NET文件夹.除此文件夹之外的文件夹及文件全删除.而且不能改变NET这个文件夹的属性.
这样的批处理怎么写.谢谢指点
2 发表于 2006-06-28 14:00 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
简单介绍两种方法:
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博大精深,实现楼主的目的当然也不止这两种方法,还可以利用特殊文件,目录名,目录特殊属性等等多种方法,期待楼下的来发掘。
3 嗯..测试过了. 发表于 2006-06-28 16:21 ·  中国 江苏 南京 电信
初级用户
积分 26
发帖 9
注册 2006-06-28 13:10
20年会员
UID 57682
状态 离线
4 嗯..测试过了. 发表于 2006-06-28 16:25 ·  中国 江苏 南京 电信
初级用户
积分 26
发帖 9
注册 2006-06-28 13:10
20年会员
UID 57682
状态 离线
方法1很好用..方法2不是我要的那种.因为它会删除NET这个文件夹里的文件但不删除文件夹.非常感谢你的技术支持..学习了..
5 真是高手呀,...收我做徒弟吧,我的QQ:85088205 发表于 2006-06-28 16:35 ·  中国 江苏 南京 电信
初级用户
积分 26
发帖 9
注册 2006-06-28 13:10
20年会员
UID 57682
状态 离线
6 在请教一下,如果要保留多个文件夹及子目录文件该怎么办 发表于 2006-08-31 03:11 ·  中国 重庆 璧山区 电信
中级用户
★★
积分 235
发帖 109
注册 2006-08-24 00:52
19年会员
UID 61161
性别 男
状态 离线
知道的告诉我一下 。QICQ:82015930
7 发表于 2006-09-01 21:10 ·  中国 上海 长宁区 电信
新手上路
积分 18
发帖 7
注册 2006-09-01 08:31
19年会员
UID 61668
状态 离线
谢谢,我也学到一招
8 发表于 2006-09-19 04:39 ·  中国 广东 广州 越秀区 电信
中级用户
★★
积分 259
发帖 112
注册 2006-09-18 04:55
19年会员
UID 62928
性别 男
状态 离线
呵呵,不错.我是来顶的!~
9 发表于 2006-09-19 08:11 ·  中国 北京 鹏博士BGP
中级用户
★★
积分 404
发帖 179
注册 2006-03-30 14:44
20年会员
UID 53056
状态 离线
做个删除列表?
10 发表于 2006-09-20 05:33 ·  IANA 局域网IP(Private-Use)
初级用户
积分 70
发帖 27
注册 2006-09-19 19:23
19年会员
UID 63080
性别 男
来自 河南
状态 离线
DEL attributes]] names
ERASE 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 ]
11 发表于 2006-09-20 10:09 ·  中国 湖南 娄底 新化县 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
19年会员
UID 58987
来自 湖南.娄底
状态 离线
哈哈~ 学了两个新命令
pushd
popd
业精于勤而荒于嬉,形成于思而毁于随。
论坛跳转: