中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-18 01:05
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎样删除指定文件夹里的所有文件? 查看 2,014 回复 15
楼 主 怎样删除指定文件夹里的所有文件? 发表于 2007-12-17 21:11 ·  中国 广东 深圳 宝安区 电信
初级用户
积分 93
发帖 35
注册 2006-12-20 10:43
UID 74034
性别 男
状态 离线
好比我要删除C:\Documents and Settings\All Users\Application Data 文件夹里所有文件夹,但是C:\Documents and Settings\All Users\Application Data 里的文件夹 bek文件夹要保留其它的都删掉。

[ Last edited by liuwushu on 2007-12-17 at 09:35 PM ]
2 发表于 2007-12-17 21:22 ·  中国 广东 深圳 宝安区 电信
初级用户
积分 93
发帖 35
注册 2006-12-20 10:43
UID 74034
性别 男
状态 离线
不知道批处理能实现这个功能吗?
3 发表于 2007-12-17 21:31 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线
先把标题改了。
4 发表于 2007-12-17 21:36 ·  中国 广东 深圳 宝安区 电信
初级用户
积分 93
发帖 35
注册 2006-12-20 10:43
UID 74034
性别 男
状态 离线
我已经改了,不好意思啊。。。

下次不会出现这样的错误了。。。
5 发表于 2007-12-17 22:39 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
@echo off
for /f "delims=*" %%i in ('dir /ad /b "C:\Documents and Settings\All Users\Application Data"^|find /v "bek"') do echo rd /s/q "%%i"
pause
实际应用去掉echo
第一高手 第二高手

6 发表于 2007-12-17 23:02 ·  中国 广东 深圳 宝安区 电信
初级用户
积分 93
发帖 35
注册 2006-12-20 10:43
UID 74034
性别 男
状态 离线
谢谢,,,谢谢谢谢谢谢、、、
7 发表于 2007-12-17 23:14 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
如果不区分大小写find后面加 /i
第一高手 第二高手

8 发表于 2007-12-17 23:19 ·  中国 广东 深圳 宝安区 电信
初级用户
积分 93
发帖 35
注册 2006-12-20 10:43
UID 74034
性别 男
状态 离线
好像删除不了文件夹
只能显示出那些多的文件夹

rd /s/q "新建文件夹"
rd /s/q "新建文件夹 (2)"
rd /s/q "新建文件夹 (3)"
请按任意键继续. . .

就出现这样
9 发表于 2007-12-17 23:23 ·  中国 广东 深圳 宝安区 电信
初级用户
积分 93
发帖 35
注册 2006-12-20 10:43
UID 74034
性别 男
状态 离线
去掉echo就会出现

系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。
请按任意键继续. . .
10 发表于 2007-12-17 23:23 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
不是说了实际应用去掉echo

rd /q/s不能随便乱用的,我们写代码加上echo是为你们负责
第一高手 第二高手

11 发表于 2007-12-17 23:24 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
@echo off
for /f "delims=*" %%i in ('dir /ad /b "C:\Documents and Settings\All Users\Application Data"^|find /v "bek"') do echo rd /s/q "C:\Documents and Settings\All Users\Application Data\%%i"
pause
第一高手 第二高手

12 发表于 2007-12-17 23:30 ·  中国 广东 深圳 宝安区 电信
初级用户
积分 93
发帖 35
注册 2006-12-20 10:43
UID 74034
性别 男
状态 离线
谢谢大哥现在可以了,我现在就是有个新的问题。现在可以删除Application Data文件夹里的文件夹,要是想删除Application Data里面的文件呢? bek文件夹里面的东西保留。
13 发表于 2007-12-17 23:40 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
最后再加
del /f/q "C:\Documents and Settings\All Users\Application Data\*.*"
第一高手 第二高手

14 发表于 2007-12-18 10:23 ·  中国 广东 深圳 宝安区 电信
初级用户
积分 93
发帖 35
注册 2006-12-20 10:43
UID 74034
性别 男
状态 离线
@echo off
for /f "delims=*" %%i in ('dir /ad /b "C:\Documents and Settings\Administrator\桌面\新建文件夹\"^|find /v "bek"') do rd /s/q "C:\Documents and Settings\Administrator\桌面\新建文件夹\%%i" del /f/q "C:\Documents and Settings\Administrator\桌面\新建文件夹\*.*"
pause

加了del /f/q出现这样的问题
无效的命令行开关 - "f"。
无效的命令行开关 - "f"。
无效的命令行开关 - "f"。
无效的命令行开关 - "f"。
无效的命令行开关 - "f"。
无效的命令行开关 - "f"。
无效的命令行开关 - "f"。
无效的命令行开关 - "f"。
请按任意键继续. . .

[ Last edited by liuwushu on 2007-12-18 at 10:42 AM ]
15 发表于 2007-12-18 10:59 ·  中国 广东 深圳 宝安区 电信
初级用户
积分 93
发帖 35
注册 2006-12-20 10:43
UID 74034
性别 男
状态 离线
找找老帖就有了我要的,,,呵呵,

以下为演示代码,必须放在E盘之外的分区运行:
CODE: [Copy to clipboard]
--------------------------------------------------------------------------------

@echo off
for /f "delims=" %%i in ('dir /a /b e:\') do (
set flag=
for /f "delims=" %%j in (test.txt) do if /i "%%i"=="%%j" set flag=1
if not defined flag echo "e:\%%i"
)
pause
  test.txt必须放在E盘之外的分区,里面的内容为不带路径的文件夹名,一行一条记录,比如:
CODE: [Copy to clipboard]
--------------------------------------------------------------------------------

文件夹1
文件夹2
文件夹3
文件夹4
  如果对以上演示代码的效果很满意,可以用下面的代码来删除E盘下指定文件夹外的其他所有文件或文件夹:
CODE: [Copy to clipboard]
--------------------------------------------------------------------------------

@echo off
for /f "delims=" %%i in ('dir /a /b e:\') do (
set flag=
for /f "delims=" %%j in (test.txt) do if /i "%%i"=="%%j" set flag=1
if not defined flag del /a /f "e:\%%i" 2>nul||rd /s "e:\%%i" 2>nul
)
pause
论坛跳转: