win2008r2:删除损坏的目录而不重新启动

我的Windows 2008 R2networking版服务器上有一个反复出现的令人讨厌的问题。 有关的驱动器恰好是一个固态硬盘,但我怀疑这是相关的。

我有一个脚本,我想要重新部署网站代码时运行。 脚本的第一行如下所示:

rmdir C:\ websites \ www.mywebsite-test.com / s / q

有时候,当这一行运行,它工作正常,有时不知何故目录被损坏。 发生这种情况时,我以pipe理员的身份,无论我做什么目录都无法访问拒绝 – 无法打开它,删除它,移动它(资源pipe理器或命令行),拥有所有权等。我相信原因是目录实际上已经不存在了,但是关于它的一些东西仍然悬而未决,使得它仍然出现在资源pipe理器和命令行中。 如果我重新启动服务器,当我login到已损坏的目录中消失了。 之后一切正常:我重新运行我的脚本,第一行响应目录不能被发现的警告,然后它继续和正常部署。

这发生在我运行这个脚本的最后两次。 之前运行的脚本没有任何问题。 我有另一个脚本,部署生产代码,除了没有“ – testing”,具有相同的第一行。 我从来没有遇到过prod脚本的问题,尽pipe它运行得不那么频繁。 两个目标目录都是IIS 7.5应用程序目录。

我想知道是否有什么我可以做的损坏的目录,当它发生,所以我不必重新启动? 什么是Windows在重新启动,最终使目录消失? 我想模拟没有重新启动。 重新启动并不是什么大问题,但是把整个服务器closures60秒,因为我的testing目录中有一个被搞乱了,这相当麻烦。

当然,一个相关的问题是为什么这首先发生?

该目录不“损坏”。 您可以在该目录下或以下的项目打开句柄,直到句柄closures,删除无法完成。

您可以使用SysInternals handle.exe实用程序列出机器上打开的手柄,并使用打开的手柄find该过程。 如果你能得到这个进程closures句柄(或者只是终止进程),你会看到删除完成。