中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [提问]如何删除除指定目录以外的所有目录?
« [1] [2] »
作者:
标题: [提问]如何删除除指定目录以外的所有目录? 上一主题 | 下一主题
Bee
初级用户




积分 44
发帖 16
注册 2006-9-23
来自 广东省
状态 离线
『楼 主』:  [提问]如何删除除指定目录以外的所有目录?

我想册除一个目录下面的文件夹和文件:
例如:目录F:\下面有3个文件夹1,2,3,我想保留这三个然后其它的全部册除!请各位高人多多提点本人不胜感激同时也为广大同等级的小辈们一个学习机会。:)



——————————俺是分割线——————————

*********************************
                     版务记录
*********************************
操作:       更改标题
原因:       原格式不符版规
原标题:    初入江湖,又遇大难题。请各位
              功力深厚在大侠们进来帮帮戼/span>
执行:       3742668
处罚:       初犯,赦之。
备注:       1.建议发贴前看看置顶版规
              2.如何更改标题?
                  点击所发贴右下角编辑——---------------------------------------------———————————★
                 按钮,然后进行编辑。                                                                                     ↓
**********************************


[ Last edited by 3742668 on 2006-9-29 at 10:22 ]

2006-9-28 08:27
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (94689558)  编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 2 楼』:  

dir     findstr /v     del 我是这样想的

2006-9-28 08:33
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
smileseeker
中级用户




积分 316
发帖 83
注册 2005-3-1
状态 离线
『第 3 楼』:  

http://www.cn-dos.net/forum/viewthread.php?tid=23404&fpage=1


找个对你应该有帮助   结合楼上的 /v

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





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

不光要/v还要/x:
@echo off
    for /f "delims=" %%i in ('dir /ad /b f:\ ^| findstr /xiv "1 2 3"') do rd /s /q "f:\%%i"
1.建议把rd语句换成echo f:\%i先看看执行结果再确定是否删除。
2.以上代码未经测试。
参考链接:怎么写出这样的批处理..谢谢

2006-9-29 02:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 5 楼』:  

版主这个“X”参数玩得真漂亮~:)
C:\TEMP\t>findstr /?
在文件中寻找字符串。

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X
        [/C:string] [/G:file] [/D:dir lis
        strings [[drive:][path]filename[

  /X         打印完全匹配的行。
  /V         只打印不包含匹配的行。
先开始我以为这个X与V参数是有冲突的,结果试验普通目录(从目录名1建到10),结果发现不加/X参数与加了/X参数的效果一样,很奇怪。


后来键了带空格的“1  1”类似的目录以后,
才明白原来/V只打印不包含从“X打印完全匹配的行”里提到的匹配的行,
(就是/X提出完全匹配的行--目录名“1”,但目录名“1 1”不完全匹配所以不提)
然后由/V来决定滤掉由/X找到的完全匹配的数据行,
就相当于只有指定的目录名为”1“或”2“或”3“的目录不提取(就可以有排除的删了),
而”1 1“等中间带有空格的但也含有”1”字符的目录名由于受到了/X的完全匹配规则,
而也可以放在要删的行列了。
2006-09-28  18:36    <DIR>          .
2006-09-28  18:36    <DIR>          ..
2006-09-28  18:29    <DIR>          1
2006-09-28  18:36    <DIR>          1 1
2006-09-28  18:33    <DIR>          11
2006-09-28  18:29    <DIR>          2
2006-09-28  18:29    <DIR>          3
2006-09-28  18:34    <DIR>          4
2006-09-28  18:34    <DIR>          5
2006-09-28  18:34    <DIR>          6
2006-09-28  18:34    <DIR>          7
利害~:)
学到很多东西~:)

2006-9-29 06:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 6 楼』:  

越来越发现光看代码是没用的,
一边看一边分析也不行,
还要亲自再试一回,一边试一边想,才真学到东西了~:)

2006-9-29 07:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Bee
初级用户




积分 44
发帖 16
注册 2006-9-23
来自 广东省
状态 离线
『第 7 楼』:  

谢谢这么多位的指导我会借你们的思路去好好研究下的!

2006-9-29 09:37
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (94689558)  编辑帖子  回复  引用回复
piziliu2004
中级用户

过度热情


积分 321
发帖 139
注册 2006-3-21
状态 离线
『第 8 楼』:  

@echo off
for /f "delims=" %%i in ('dir/ad/b') do (   
if /i not "%%i" == "1" rd %%i
if /i not "%%i" == "2" rd %%i
if /i not "%%i" == "3" rd %%i
)

我在当前目录下执行批处理。为什么这样不行呢?。 它delete所有目录了。



知识在于不断积累
2006-9-29 22:24
查看资料  发送邮件  发短消息 网志  OICQ (16750931)  编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by piziliu2004 at 2006-9-29 10:24:
@echo off
for /f "delims=" %%i in ('dir/ad/b') do (   
if /i not "%%i" == "1" rd %%i
if /i not "%%i" == "2" rd %%i
if /i not "%%i" = ...

当搜索到“1”时:if /i not "%%i" == "1" rd %%i,删除除“1”以外的文件夹(包含2、3)
当搜索到“2”时:if /i not "%%i" == "2" rd %%i,删除除“2”以外的文件夹(包含1、3)
当搜索到“3”时:if /i not "%%i" == "3" rd %%i,删除除“3”以外的文件夹(包含1、2)

想象还剩下什么???

2006-9-29 22:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
piziliu2004
中级用户

过度热情


积分 321
发帖 139
注册 2006-3-21
状态 离线
『第 10 楼』:  

@echo off
for /f "delims=" %%i in ('dir/ad/b') do (   
if /i  "%%i" == "1" goto END
if /i  "%%i" == "2" goto END
if /i  "%%i" == "3" goto END
rd %%i
:END
)

还有怎么会包错了。



知识在于不断积累
2006-9-29 23:01
查看资料  发送邮件  发短消息 网志  OICQ (16750931)  编辑帖子  回复  引用回复
piziliu2004
中级用户

过度热情


积分 321
发帖 139
注册 2006-3-21
状态 离线
『第 11 楼』:  

用这种方法实现。。。。。。成功
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir/ad/b') do (   
set /a pathfolder=%%i
if !pathfolder! GTR 3 rd %%i
)

上面的问题: 批处理()里边不能用: 标注释么



知识在于不断积累
2006-9-29 23:08
查看资料  发送邮件  发短消息 网志  OICQ (16750931)  编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 12 楼』:  

两个单字节的“::”冒号

2006-9-30 00:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
piziliu2004
中级用户

过度热情


积分 321
发帖 139
注册 2006-3-21
状态 离线
『第 13 楼』:  

这样?。不行。 能不详细指点一下代码
for /f "delims=" %%i in ('dir/ad/b') do (   

if /i  "%%i" == "1" goto :END
if /i  "%%i" == "2" goto :END
if /i  "%%i" == "3" goto :END
rd %%i
::END
)



知识在于不断积累
2006-9-30 02:06
查看资料  发送邮件  发短消息 网志  OICQ (16750931)  编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 14 楼』:  

注释是两个单字节的“::”冒号,标签才是一个单字节的“:”冒号

2006-9-30 02:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
9527
银牌会员

努力做坏人


积分 1185
发帖 438
注册 2006-8-28
来自 北京
状态 离线
『第 15 楼』:  

@echo off
for /f "delims=" %%i in ('dir /ad /b') do (
if not "%%i"=="1" if not "%%i"=="2" if not "%%i"=="3" call :ii "%%i"
)
goto :eof

:ii
echo %1
goto :eof



我今后在论坛的目标就是做个超级坏人!!!
2006-9-30 02:52
查看资料  发短消息 网志  OICQ (329429)  编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: