无法从批处理文件夹中删除文件夹 - 或在其他程序中打开文件

时间:2014-11-03 08:29:18

标签: batch-file directory delete-directory

对此进行了搜索,但很少有喜悦。我正在制作,之后,尝试删除同一批处理文件中的文件夹:

mkdir "%_gameKey%"
:: Stuff.....
rmdir /s /q "%_gameKey%"

我收到错误"进程无法访问该文件,因为它正由另一个进程使用。"我也无法通过右键单击删除删除文件夹 - 同样的错误。有趣的是,rmdir删除了文件夹的内容。文件夹中没有任何内容,也没有任何明显的访问权限。

我使用过Unlocker - 显示没有进程。还使用了Process Explorer,搜索了文件夹名称(带/不带完整路径) - 没有搜索结果。

当我重新启动机器时,我可以将其删除。不确定是否为用户权限。我从中看到用户只有读/写不完全控制。 (对不起 - 用户权限不太好 - 特别是在Windows上!)。但是 - 肯定不能这样,因为我可以在重启时删除它。

该文件夹位于非操作系统驱动器上。

我很难过 - 有什么想法吗?

3 个答案:

答案 0 :(得分:2)

如果任何应用程序当前将此文件夹用作工作目录,则无法在Windows上删除该文件夹。

在您的情况下,我认为批处理文件使用命令cd将工作目录更改为创建的目录。因此,在使用命令cd删除此目录之前,需要再次使用rmdir设置不同的工作目录。

启动其他应用程序当然不是一个好主意,工作目录当前是应该稍后删除的目录,并且在退出批处理文件时继续运行,因为那些已启动的应用程序也将此目录作为工作目录。

答案 1 :(得分:0)

我的话 - 这是一个不起眼的人,但最终通过逐步完成将rmdir放在各个地方的代码找到了答案。我发布这个以防万一遇到同样的事情......

基本上,我在所述文件夹中调用cmd提示并启动外部exe。后来,我用TaskKill强行关闭了exe,但是这个cmd控制台在我试图删除的目录的路径上打开了。我会更清楚......

虽然批处理脚本在目录中(例如C:\ Windows \ Scripts \ Launch),但我使用了以下命令:

Start "AppLaunch" Call "!_supExe!" !_supCmd!

在扩展之后,转换为,例如:

Start "AppLaunch" Call "C:\Windows\Program Files(x86)\Troubleshooter\trbshtr.exe" -game "My Game"

我使用的是因为,从阅读开始,Windows中似乎存在一个错误,导致以下命令失败:

Start "AppLaunch" "C:\Windows\Program Files(x86)\Troubleshooter\trbshtr.exe" -game "My Game" 

当你必须为exe和参数使用引号时(例如,有空格的地方),问题就来了。 Windows无法正确读取。因此必须使用topmost来启动这些应用程序。

使用时出现问题:

taskkill /f /im trbshtr.exe

exe被杀了,但是命令提示符没有。在Start命令上使用/ b没有任何区别。

所以,解决方案是 - 从目录中删除一个批处理脚本在通过上面的代码启动其他应用程序之前不会改变的目录。完成工作....

现在我只想告诉我如何关闭所有打开的cmd窗口(如果我使用/ b开关那么关闭taskmgr中的那些窗口)。这可能是另一个搜索或主题的主题!

答案 2 :(得分:0)

在通过Win cmd从文件夹启动Powershell进程后,我遇到了同样的问题。
powershell完成后,我cd ..赢得了CMD,但rd /q /s给出了错误:在另一个进程中打开
在浏览器窗口中手动删除文件夹时,即使它是空的,我也会遇到相同的错误。

wmic process显示,即使powershell已完成任务且powershell窗口已关闭,powershell.exe仍可以锁定该文件夹。 tasklist

确认了这一点

然后我taskkill /im powershell.exe,然后可以删除该文件夹。