中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-07 14:21
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何删除一个正在被使用中的文档所在的目录 查看 951 回复 8
楼 主 [求助]如何删除一个正在被使用中的文档所在的目录 发表于 2008-01-25 18:56 ·  中国 上海 浦东新区 电信
初级用户
积分 22
发帖 9
注册 2007-02-07 00:39
19年会员
UID 78826
性别 男
状态 离线
今天在论坛里发现了别人的相关代码,比如可以:
@echo off
del /q /s /a /f d:\123\.
cd d:\123
rd /s /q .
exit

但是这个有个问题的存在,就是当所删除的子目录内有一个文档正在被另外一个人打开的时候,会无法删除该目录,虽然文件已经被删除了。比如说:在D\123\456目录下有一个文档789.txt被一个通过网络访问的人打开查看中,那这个456目录就无法删除,不知道怎么解决有被别人正在使用中的文档所在目录的删除办法?谢谢。
2 发表于 2008-01-25 19:08 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
先说明什么系统,如果XP的话
1: 目录内有一个文档正在被另外一个人打开的时候......能删除该目录
2: 被一个通过网络访问的人打开查看中......未知能不能删除该目录
第一高手 第二高手

3 发表于 2008-01-25 19:11 ·  中国 上海 浦东新区 电信
初级用户
积分 22
发帖 9
注册 2007-02-07 00:39
19年会员
UID 78826
性别 男
状态 离线
我的系统是W2k3 standard server sp2 以及Windows XP professional sp2上都不可以
就是本机打开需要删除目录下的文档,该目录也删除不了。
4 发表于 2008-01-25 19:57 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
需要wmic 见下面演示代码
@echo off
md D:\test
echo.>D:\test\test.txt
start D:\test\test.txt
rem 以上创建D:\test\test.txt并打开D:\test\test.txt
for /f "tokens=2,3 delims=," %%i in ('wmic process get ProcessId^,CommandLine /format:csv^|find /v "find"^|find /i "D:\test\test.txt"') do set PID=%%j
taskkill.exe /PID %PID%
rd /s /q D:\test\
pause
第一高手 第二高手

5 发表于 2008-01-25 20:04 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
taskkill.exe不能for do语句后面,因为taskkill.exe调用wmi杀死进程的
多个进程的话启用下变量延迟,若实际应用有问题再跟贴,我有事闪了......
第一高手 第二高手

6 发表于 2008-01-26 00:02 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
演示2个cmd进程当前目录D:\test(此时是删除不掉的)
@echo off
md D:\test 2>nul
start /min cmd /k cd D:\test
start /min cmd /k cd D:\test
for /f "tokens=2,3 delims=," %%i in ('wmic process get ProcessId^,CommandLine /format:csv^|find /v "find"^|find /i "D:\test"') do call set pid=%%pid%% /pid %%j
taskkill.exe /f %PID%
rd /s /q D:\test\
pause
第一高手 第二高手

7 发表于 2008-02-04 16:54 ·  中国 上海 浦东新区 电信
初级用户
积分 22
发帖 9
注册 2007-02-07 00:39
19年会员
UID 78826
性别 男
状态 离线
我把情况再具体化下:
现在我有一个文件共享的服务器,有一个共享文件夹比如说“公共交流区”,权限是everyone Full control,在局域网里的所有PC都能通过445端口连接到这个共享文件夹进行文件的操作,现在就是想在每天晚上的时候将这个文件夹里的所有内容清空,但是就是有可能会遇到需要删除的时候,该文件仍然在被某人使用中,这些文件可能是TXT、DOC、EXE、EXEL、PDF等等,现在就是想能做出个P来执行这个删除的工作。.

[ Last edited by ladchee on 2008-2-4 at 05:33 PM ]
8 发表于 2008-02-19 17:44 ·  中国 上海 浦东新区 电信
初级用户
积分 22
发帖 9
注册 2007-02-07 00:39
19年会员
UID 78826
性别 男
状态 离线
不知道有没有什么好的办法?
9 发表于 2008-02-19 19:12 ·  中国 北京 联通
银牌会员
★★★
积分 1,287
发帖 634
注册 2007-05-02 15:06
19年会员
UID 87277
性别 男
来自 cmd.exe
状态 离线
unlocker
论坛跳转: