中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何删除一个正在被使用中的文档所在的目录
作者:
标题: [求助]如何删除一个正在被使用中的文档所在的目录 上一主题 | 下一主题
ladchee
初级用户





积分 22
发帖 9
注册 2007-2-7
状态 离线
『楼 主』:  [求助]如何删除一个正在被使用中的文档所在的目录

今天在论坛里发现了别人的相关代码,比如可以:
@echo off
del /q /s /a /f d:\123\.
cd d:\123
rd /s /q .
exit

但是这个有个问题的存在,就是当所删除的子目录内有一个文档正在被另外一个人打开的时候,会无法删除该目录,虽然文件已经被删除了。比如说:在D\123\456目录下有一个文档789.txt被一个通过网络访问的人打开查看中,那这个456目录就无法删除,不知道怎么解决有被别人正在使用中的文档所在目录的删除办法?谢谢。

2008-1-25 18:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 2 楼』:  

先说明什么系统,如果XP的话
1: 目录内有一个文档正在被另外一个人打开的时候......能删除该目录
2: 被一个通过网络访问的人打开查看中......未知能不能删除该目录



第一高手    第二高手

2008-1-25 19:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ladchee
初级用户





积分 22
发帖 9
注册 2007-2-7
状态 离线
『第 3 楼』:  

我的系统是W2k3 standard server sp2 以及Windows XP professional sp2上都不可以
就是本机打开需要删除目录下的文档,该目录也删除不了。

2008-1-25 19:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 4 楼』:  

需要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




第一高手    第二高手

2008-1-25 19:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 5 楼』:  

taskkill.exe不能for do语句后面,因为taskkill.exe调用wmi杀死进程的
多个进程的话启用下变量延迟,若实际应用有问题再跟贴,我有事闪了......



第一高手    第二高手

2008-1-25 20:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 6 楼』:  

演示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




第一高手    第二高手

2008-1-26 00:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ladchee
初级用户





积分 22
发帖 9
注册 2007-2-7
状态 离线
『第 7 楼』:  

我把情况再具体化下:
现在我有一个文件共享的服务器,有一个共享文件夹比如说“公共交流区”,权限是everyone Full control,在局域网里的所有PC都能通过445端口连接到这个共享文件夹进行文件的操作,现在就是想在每天晚上的时候将这个文件夹里的所有内容清空,但是就是有可能会遇到需要删除的时候,该文件仍然在被某人使用中,这些文件可能是TXT、DOC、EXE、EXEL、PDF等等,现在就是想能做出个P来执行这个删除的工作。.

[ Last edited by ladchee on 2008-2-4 at 05:33 PM ]

2008-2-4 16:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ladchee
初级用户





积分 22
发帖 9
注册 2007-2-7
状态 离线
『第 8 楼』:  

不知道有没有什么好的办法?

2008-2-19 17:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
knoppix7
银牌会员





积分 1287
发帖 634
注册 2007-5-2
来自 cmd.exe
状态 离线
『第 9 楼』:  

unlocker

2008-2-19 19:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: