标题: [文件操作] 批处理如何删除指定目录下的文件夹? [打印本页]
作者: 983921847 时间: 2013-1-8 10:33 标题: 批处理如何删除指定目录下的文件夹?
写一个可以删除这个文件bat D:\Documents and Settings\liuyang03\Application Data\Thinstall\IDNMitigationAPIs 其中的 liuyang03 这个文件夹的名称可以变化,但是命名方式是“字母”/“字母+数字”的形式,哪位大侠帮我写一个bat,可以在liuyang03这个文件夹名称可以改变的情况下仍然可以删除这个文件夹,谢谢,在线等……
作者: BAT-VBS 时间: 2013-1-8 10:38
D:\Documents and Settings\liuyang03\Application Data\Thinstall\IDNMitigationAPIs下面只有一个文件夹吗?
作者: 983921847 时间: 2013-1-8 10:39
回复 2# BAT-VBS
不是,肯定得用/s
下面还有文件夹和文件
作者: BAT-VBS 时间: 2013-1-8 10:41
回复 3# 983921847
我是问,如果liuyang04和liuyang05同时存在,怎么决定删哪个?
更/s没有一毛钱关系。
作者: 983921847 时间: 2013-1-8 10:43
回复 4# BAT-VBS
奥,都删除
作者: BAT-VBS 时间: 2013-1-8 10:47
- @echo off
- rd /s /q "D:\Documents and Settings\liuyang03\Application Data\Thinstall\IDNMitigationAPIs"
- md "D:\Documents and Settings\liuyang03\Application Data\Thinstall\IDNMitigationAPIs"
复制代码
作者: 983921847 时间: 2013-1-8 10:50
回复 6# BAT-VBS
谢谢,这个可以删除文件名是 liuyang03 这种情况下的文件,能不能改一下,当liuyang03变成其他文件名是也可以将这个文件删除,貌似可以使用类似于正则表达式样的东西替换liuyang03,谢谢您!
作者: 983921847 时间: 2013-1-8 10:51
回复 6# BAT-VBS
除了liuyang03文件夹名字可以变动外,其他的文件夹名字不会变动
作者: BAT-VBS 时间: 2013-1-8 10:53
回复 7# 983921847
你能否给出一个针对6楼代码测试失败的案例?
作者: 983921847 时间: 2013-1-8 11:03
比如说:D:\Documents and Settings\liuyang03\Application Data\Thinstall\IDNMitigationAPIs
中的文件夹liuyang03 变成了 ligang01
要删除的文件变成了 D:\Documents and Settings\ligang01\Application Data\Thinstall\IDNMitigationAPIs 这样就不能删除这个文件了
作者: 983921847 时间: 2013-1-8 11:03
回复 9# BAT-VBS
比如说:D:\Documents and Settings\liuyang03\Application Data\Thinstall\IDNMitigationAPIs
中的文件夹liuyang03 变成了 ligang01
要删除的文件变成了 D:\Documents and Settings\ligang01\Application Data\Thinstall\IDNMitigationAPIs 这样就不能删除这个文件了
作者: BAT-VBS 时间: 2013-1-8 11:08
回复 11# 983921847
D:\Documents and Settings\下面的文件夹有哪些?全部贴出来看看。或者说只有一个文件夹?
作者: 983921847 时间: 2013-1-8 11:37
回复 12# BAT-VBS
卷 PersistentDataDisk 的文件夹 PATH 列表
卷序列号码为 00200064 7EC4:0494
D:.
├─1
├─All Users
│ ├─Documents
│ │ ├─My Music
│ │ │ ├─My Playlists
│ │ │ ├─Sample Playlists
│ │ │ │ └─000AB63F
│ │ │ ├─Sync Playlists
│ │ │ │ └─0007BFC3
│ │ │ └─示例音乐
│ │ ├─My Pictures
│ │ │ └─示例图片
│ │ └─My Videos
│ ├─Favorites
│ │ └─链接
│ ├─My Documents
│ │ ├─My Music
│ │ └─My Pictures
│ ├─「开始」菜单
│ │ └─程序
│ │ ├─Active Player
│ │ ├─AutoCAD 2004
│ │ ├─EMC Avamar
│ │ ├─Java Web Start
│ │ ├─Meridium APM Applications
│ │ ├─Microsoft Office
│ │ │ └─Microsoft Office 工具
│ │ ├─Microsoft Silverlight
│ │ ├─Microsoft SQL Server 6.5
│ │ ├─Oracle - OraClient10g_home1
│ │ │ ├─Application Development
│ │ │ ├─Configuration and Migration Tools
│ │ │ ├─Enterprise Management Packs
│ │ │ │ └─Change
│ │ │ ├─Integrated Management Tools
│ │ │ └─Oracle Installation Products
│ │ ├─SAP Front End
│ │ ├─SEP Reader
│ │ ├─TASS_CSP
│ │ ├─USB Token
│ │ │ └─USB Token 3000
│ │ ├─VMware
│ │ │ └─VMware Tools
│ │ ├─yg_reader
│ │ ├─启动
│ │ ├─好压软件
│ │ │ └─好压软件实用工具
│ │ ├─搜狗五笔输入法
│ │ ├─搜狗拼音输入法
│ │ │ └─链接
│ │ ├─数字档案馆
│ │ ├─方正德赛数据加工系统4.1 客户端
│ │ ├─清华同方知网
│ │ │ └─TPI45
│ │ │ ├─Mets服务
│ │ │ ├─OCR服务
│ │ │ ├─内容加工与发布
│ │ │ ├─客户端程序
│ │ │ ├─服务器
│ │ │ └─电子书加工
│ │ ├─游戏
│ │ ├─福昕阅读器
│ │ ├─管理工具
│ │ ├─超星阅读器
│ │ ├─金盘图书馆NET集成管理系统
│ │ └─附件
│ │ ├─娱乐
│ │ ├─系统工具
│ │ ├─辅助工具
│ │ └─通讯
│ └─桌面
├─Default User
│ ├─Favorites
│ │ └─链接
│ ├─My Documents
│ │ ├─My Music
│ │ └─My Pictures
│ ├─「开始」菜单
│ │ └─程序
│ │ ├─启动
│ │ └─附件
│ │ ├─娱乐
│ │ └─辅助工具
│ └─桌面
└─liuyang03
├─avscc_settings
├─Favorites
│ └─链接
├─My Documents
│ ├─My Music
│ └─My Pictures
├─「开始」菜单
│ └─程序
│ ├─启动
│ └─附件
│ ├─娱乐
│ └─辅助工具
└─桌面
作者: 983921847 时间: 2013-1-8 11:43
回复 12# BAT-VBS
文件夹下有隐藏的文件夹没有显示出来,目的是删除 IDNMitigationAPIs 这个文件夹,但是 文件夹 liuyang03这个文件夹得名字可以变化。
作者: terse 时间: 2013-1-8 11:51
不确定你真正要删除那一级文件夹 先ECHO- @echo off
- set "ph=D:\Documents and Settings\"
- for /f "delims=" %%i in ('dir /ad /b "%ph%"^|Findstr /ir \\[a-z]*[0-9]*\\') do (
- if exist "%%i\" echo rd /s /q "%%i\"
- )
- pause
复制代码
作者: 983921847 时间: 2013-1-8 12:22
回复 15# terse
您的代码我试了试,稍微有些小问题,不能把“IDNMitigationAPIs”文件夹删除,谢谢您!
作者: terse 时间: 2013-1-8 12:25
本帖最后由 terse 于 2013-1-8 12:42 编辑
回复 terse
您的代码我试了试,稍微有些小问题,不能把“IDNMitigationAPIs”文件夹删除,谢谢您!
983921847 发表于 2013-1-8 12:22
能否把ECHO 结果贴上来
还有去掉ECHO后 的提示是什么
对了 现在路径的不全 DIR 加 /S 后 可一试
不加/S的话 在路径前加%ph%
最后问一下 整个路径里是否就一个变量(字母加数字的文件夹)在里面
试这个笨办法看 (其他文件夹名不变的情况)- @echo off
- set "ph=D:\Documents and Settings\"
- for /f "delims=" %%i in ('dir /ad /b "%ph%"^|Findstr /ier \\[a-z]*[0-9]*\\') do (
- rd /s /q "%ph%\%%i\Application Data\Thinstall\IDNMitigationAPIs\"
- )
- pause
复制代码
作者: apang 时间: 2013-1-8 13:08
标题党,斑竹该修理
作者: BAT-VBS 时间: 2013-1-8 13:28
回复 14# 983921847 - @echo off
- for /f "delims=" %%a in ('dir /s /b /ad "D:\Documents and Settings\" ^| findstr "IDNMitigationAPIs"') do (
- rd /s /q "%%a"
- )
复制代码
作者: 983921847 时间: 2013-1-8 13:28
回复 17# terse
您好,这是我运行您的bat之后的显示结果,我将echo放开了,谢谢,删除不了IDNMitigationAPIs文件夹。
C:\Documents and Settings\Administrator\桌面>set "ph=D:\Documents and Settings\"
C:\Documents and Settings\Administrator\桌面>for /F "delims=" %i in ('dir /ad /b
"D:\Documents and Settings\"|Findstr /ier \\[a-z]*[0-9]*\\') do (rd /s /q "D:\D
ocuments and Settings\\%i\Application Data\Thinstall\IDNMitigationAPIs\" )
C:\Documents and Settings\Administrator\桌面>pause
请按任意键继续. . .
我把rd /s /q "%ph%\%%i\Application Data\Thinstall\IDNMitigationAPIs\"改成rd /s /q "%ph%\%%i\Application Data\Thinstall\IDNMitigationAPIs"也不行
作者: 983921847 时间: 2013-1-8 13:31
回复 19# BAT-VBS
您好,代码可以使用了,谢谢您!
作者: terse 时间: 2013-1-8 13:44
回复 20# 983921847
晕 以你回复可用代码 那为什么不直接 DIR IDNMitigationAPIs 文件夹 搞什么自摸数字组合 浪费我....
作者: BAT-VBS 时间: 2013-1-8 13:51
回复 21# 983921847
问题解决后,请编辑顶楼帖子在标题前面注明[已解决],并给回答者加分。
作者: 983921847 时间: 2013-1-8 14:04
回复 22# terse
您不要误会,我的应用环境是这样的,在很多的电脑上运行这个bat,用户很小白,给他们刷到桌面上,他们需要时长运行这个文件
作者: 983921847 时间: 2013-1-8 14:09
回复 23# BAT-VBS
您好,还有个问题,就是其中的某些文件被某一个程序占用,无法删除,能强制删除吗?谢谢
作者: BAT-VBS 时间: 2013-1-8 14:12
回复 25# 983921847
方法1:先杀进程,再删文件夹。
方法2:调用unlocker等支持命令行的强删工具。
作者: terse 时间: 2013-1-8 14:36
回复 terse
您不要误会,我的应用环境是这样的,在很多的电脑上运行这个bat,用户很小白,给他们 ...
983921847 发表于 2013-1-8 14:04
我的意思是 既然确定文件夹名 是否可这样一试 dir /ad /s /b "D:\Documents and Settings\IDNMitigationAPIs"
方案并不通用
作者: 983921847 时间: 2013-1-8 14:57
回复 15# terse
您好,我要删除IDNMitigationAPIs这个文件夹,谢谢您!
作者: terse 时间: 2013-1-8 15:12
回复 terse
您好,我要删除IDNMitigationAPIs这个文件夹,谢谢您!
983921847 发表于 2013-1-8 14:57
对于你我之间的理解 无语了
因为知道了要删除IDNMitigationAPIs这个文件夹 所以才 dir /s......
到此为止 不讨论没意义的了 何况问题也解决了
作者: 983921847 时间: 2013-1-8 15:42
回复 29# terse
这个回复是我回复错了地方了,不好意思,现在的问题是可以删除这个文件夹中的文件,但是有些文件是被程序占用的,请问,有没有合适的命令能够直接删除被程序占用的文件,谢谢!
作者: terse 时间: 2013-1-8 16:33
看有进程运行吗
也不知道杀得了不- @ECHO OFF&setlocal enabledelayedexpansion
- set "str=IDNMitigationAPIs"
- set "wm=wmic process get executablepath"
- for /f "tokens=*" %%i in ('dir /ad /s /b "D:\Documents and Settings\%str%"') do (
- for /f "delims=" %%j in ('%wm%^|findstr /i "\\%str%\\"') do (
- For /f "tokens=*" %%k in ("%%j") do set "Eph=%%~nxk"
- wmic process where name="!Eph!" delete >nul
- rd /s /q "%%i\"
- )
- )
- PAUSE
复制代码
作者: weiluz 时间: 2013-11-22 17:32
本帖最后由 weiluz 于 2013-11-22 17:34 编辑
楼上的,真心热心人士~~致敬!
另,如果有进程占用不能干掉进程的话可以使用系统自带的 内核调试工具命令ntsd,基本上可以强制结束所有进程。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |