Board logo

标题: [求助]如何删除一个正在被使用中的文档所在的目录 [打印本页]

作者: ladchee     时间: 2008-1-25 18:56    标题: [求助]如何删除一个正在被使用中的文档所在的目录

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

但是这个有个问题的存在,就是当所删除的子目录内有一个文档正在被另外一个人打开的时候,会无法删除该目录,虽然文件已经被删除了。比如说:在D\123\456目录下有一个文档789.txt被一个通过网络访问的人打开查看中,那这个456目录就无法删除,不知道怎么解决有被别人正在使用中的文档所在目录的删除办法?谢谢。
作者: fastslz     时间: 2008-1-25 19:08
先说明什么系统,如果XP的话
1: 目录内有一个文档正在被另外一个人打开的时候......能删除该目录
2: 被一个通过网络访问的人打开查看中......未知能不能删除该目录
作者: ladchee     时间: 2008-1-25 19:11
我的系统是W2k3 standard server sp2 以及Windows XP professional sp2上都不可以
就是本机打开需要删除目录下的文档,该目录也删除不了。
作者: fastslz     时间: 2008-1-25 19:57
需要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

作者: fastslz     时间: 2008-1-25 20:04
taskkill.exe不能for do语句后面,因为taskkill.exe调用wmi杀死进程的
多个进程的话启用下变量延迟,若实际应用有问题再跟贴,我有事闪了......
作者: fastslz     时间: 2008-1-26 00:02
演示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

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

[ Last edited by ladchee on 2008-2-4 at 05:33 PM ]
作者: ladchee     时间: 2008-2-19 17:44
不知道有没有什么好的办法?
作者: knoppix7     时间: 2008-2-19 19:12
unlocker