无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5432|回复: 15
打印 上一主题 下一主题

[求助] 如果某个文件夹包含某个固定名称文件夹,则删除这个文件夹,应该怎么写

[复制链接]
跳转到指定楼层
1#
发表于 2016-9-17 10:07:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,才疏学浅,不知道怎么写,特来求教
多谢啦!
大体意思是遍历c盘d盘,如果某个文件夹包含文件夹aaa,则删除这个文件夹
2#
发表于 2016-9-17 11:01:19 | 只看该作者
试试看行不
  1. Global Const $fp_a = "c:\aaa"
  2. Global Const $fp_b = "d:\aaa"

  3. If FileExists($fp_a) Or FileExists($fp_b) Then
  4. DirRemove($fp_a)
  5. DirRemove($fp_b)
  6. EndIf
复制代码

点评

谢谢回复,但是你这个是批处理吗? 我的还要遍历c盘d盘所有的文件夹的啊  详情 回复 发表于 2016-9-17 11:40
回复

使用道具 举报

3#
 楼主| 发表于 2016-9-17 11:40:20 | 只看该作者

谢谢回复,但是你这个是批处理吗?
我的还要遍历c盘d盘所有的文件夹的啊

点评

这是au3 不会批处理哦!  详情 回复 发表于 2016-9-17 14:05
回复

使用道具 举报

4#
发表于 2016-9-17 14:05:51 | 只看该作者
zhxy9804 发表于 2016-9-17 11:40
谢谢回复,但是你这个是批处理吗?
我的还要遍历c盘d盘所有的文件夹的啊

这是au3
不会批处理哦!

点评

好神奇?……  详情 回复 发表于 2016-9-17 16:53
回复

使用道具 举报

5#
发表于 2016-9-17 15:54:11 | 只看该作者
本帖最后由 slore 于 2016-9-17 15:58 编辑
  1. @echo off
  2. set tf=aaa
  3. for /f "delims=" %%i in ('dir /ad /b /s D:\ ^| findstr /i "\\%tf%$"') do (
  4.   echo rd /s /q "%%~dpi"
  5. )
  6. pause
  7. exit
复制代码


如果D盘根目录下直接存在aaa,整个D盘目录要清除。。。你最好先判断下。

点评

提前加上一行,先删除根目录里面的  详情 回复 发表于 2016-9-17 18:12
好吧,经测试,你这个清空根目录的原因就是这个"%%~dpi" 根目录的aaa路径自然是根目录,应写作"%%~dpnxi" 为何要加nx,因为要适应a.b这样的文件夹,当然,这里可以省去。  详情 回复 发表于 2016-9-17 17:45
回复

使用道具 举报

6#
发表于 2016-9-17 16:53:26 来自手机 | 只看该作者
本帖最后由 nttwqz 于 2016-9-17 17:31 编辑
xzf680 发表于 2016-9-17 14:05
这是au3
不会批处理哦!


请教个问题

findstr /i "\\%tf%$"'

中的\\是不是用\转义了本身?就像%转义其本身一样?


末尾的%%~dpi是为了更保险?好像%%i也可以

点评

对的,\\是转义 %%~dpi是因为谁包含aaa删除这个文件夹而不是要删除aaa文件夹。 dpi的话,得到的是aaa的父目录。  详情 回复 发表于 2016-9-17 17:42
回复

使用道具 举报

7#
发表于 2016-9-17 17:42:03 | 只看该作者
nttwqz 发表于 2016-9-17 16:53
请教个问题

findstr /i "\\%tf%$"'

对的,\\是转义

%%~dpi是因为谁包含aaa删除这个文件夹而不是要删除aaa文件夹。
dpi的话,得到的是aaa的父目录。

点评

我理解的是删除aaa文件夹,楼主描述的话可以这样理解…… 如果是删除aaa的父文件夹,删除根目录就没有错了,完全符合楼主的完全!!!嘿嘿  详情 回复 发表于 2016-9-17 20:29
回复

使用道具 举报

8#
发表于 2016-9-17 17:45:27 来自手机 | 只看该作者
slore 发表于 2016-9-17 15:54
如果D盘根目录下直接存在aaa,整个D盘目录要清除。。。你最好先判断下。

好吧,经测试,你这个清空根目录的原因就是这个"%%~dpi"

根目录的aaa路径自然是根目录,应写作"%%~dpnxi"

为何要加nx,因为要适应a.b这样的文件夹,当然,这里可以省去。
回复

使用道具 举报

9#
发表于 2016-9-17 18:04:26 来自手机 | 只看该作者
本帖最后由 nttwqz 于 2016-9-17 21:19 编辑

好吧,楼主的描述不够严谨

改了一下,现在是删除aaa的父文件夹,不会清空磁盘根目录,也不会删除根目录的aaa文件夹


  1. 方法一:

  2. @echo off
  3. for %%a in (c d) do (
  4.         pushd %%a:\
  5.         for /r %%b in (aaa) do if exist %%b\ if /i not "%%~dpb"=="%%a:" rd /s /q "%%~dpb" && echo 已删除 %%~dpb
  6. )
  7. pause


  8. 方法二:

  9. @echo off
  10. for %%c in (c d) do for /f "delims=" %%d in ('dir /ad /s /b  %%c:\ ^| findstr "\\aaa$"') do if /i not "%%~dpd"=="%%c:" rd /s /q "%%~dpd" && echo 已删除 %%~dpd
  11. pause


  12. 方法三:
  13. 检索所有可见分区

  14. @echo off
  15. for /f "delims=" %%e in ('wmic fsdir where "filename='aaa' and path<>'\\'" get name ^| find ":") do rd /s /q "%%~dpe" && echo 已删除 %%~dpe
复制代码



点评

非常感谢哈  详情 回复 发表于 2016-9-17 22:05
回复

使用道具 举报

10#
 楼主| 发表于 2016-9-17 18:12:47 | 只看该作者
slore 发表于 2016-9-17 15:54
如果D盘根目录下直接存在aaa,整个D盘目录要清除。。。你最好先判断下。

提前加上一行,先删除根目录里面的
回复

使用道具 举报

11#
发表于 2016-9-17 20:29:09 来自手机 | 只看该作者
slore 发表于 2016-9-17 17:42
对的,\\是转义

%%~dpi是因为谁包含aaa删除这个文件夹而不是要删除aaa文件夹。


我理解的是删除aaa文件夹,楼主描述的话可以这样理解……

如果是删除aaa的父文件夹,删除磁盘根目录就没有错了,完全符合楼主的要求!!!嘿嘿
回复

使用道具 举报

12#
 楼主| 发表于 2016-9-17 22:05:43 | 只看该作者
nttwqz 发表于 2016-9-17 18:04
好吧,楼主的描述不够严谨

改了一下,现在是删除aaa的父文件夹,不会清空磁盘根目录,也不会删除根目录 ...

非常感谢哈
回复

使用道具 举报

13#
发表于 2016-9-24 09:08:46 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

14#
发表于 2016-10-13 13:44:55 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

15#
发表于 2016-10-20 01:14:19 | 只看该作者
@echo off
set tf=aaa
for /f "delims=" %%i in ('dir /ad /b /s D:\ ^| findstr /i "\\%tf%$"') do (
  echo rd /s /q "%%~dpi"
)
pause
exit
第一行能看懂
第二行能看懂
最后一行能懂
倒数第二行懂
其它的就不懂了。
"\\%tf%$"'=当前盘下的aaa目录吗?$符号有什么用???
echo rd /s /q "%%~dpi" 这个能执行吗?echo 只是显示用的啊,能执行删除目录的作用吗?
delims=为什么要加双引号
这些都不懂哎,如果这些都懂了,是不是for命令基本毕业了?
回复

使用道具 举报

16#
发表于 2016-10-22 01:02:56 | 只看该作者
学习了~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-24 05:23

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表