Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file can';t从批处理中删除文件夹-文件夹或在其他程序中打开的文件_Batch File_Directory_Delete Directory - Fatal编程技术网

Batch file can';t从批处理中删除文件夹-文件夹或在其他程序中打开的文件

Batch file can';t从批处理中删除文件夹-文件夹或在其他程序中打开的文件,batch-file,directory,delete-directory,Batch File,Directory,Delete Directory,对此进行了搜索,但没有什么乐趣。我正在制作和稍后尝试删除同一批处理文件中的文件夹: mkdir "%_gameKey%" :: Stuff..... rmdir /s /q "%_gameKey%" 我收到错误“该进程无法访问该文件,因为它正被另一个进程使用。”我也无法通过右键单击“删除”删除该文件夹-同样的错误。有趣的是,rmdir删除了文件夹的内容。文件夹中没有任何内容,也没有任何明显的访问内容 我使用了解锁器-显示没有进程。还使用了Process Explorer,在文件夹名称上搜索(带

对此进行了搜索,但没有什么乐趣。我正在制作和稍后尝试删除同一批处理文件中的文件夹:

mkdir "%_gameKey%"
:: Stuff.....
rmdir /s /q "%_gameKey%"
我收到错误“该进程无法访问该文件,因为它正被另一个进程使用。”我也无法通过右键单击“删除”删除该文件夹-同样的错误。有趣的是,rmdir删除了文件夹的内容。文件夹中没有任何内容,也没有任何明显的访问内容

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

当我重新启动我的机器时,我可以删除它。不确定是否取决于用户权限。我从中看到,用户只有读/写权限,而没有完全控制权限。(抱歉-用户权限方面的东西不太好-尤其是在windows上!)。但是-当然不可能是这样,因为我可以在重新启动时删除它

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


我被难住了,有什么想法吗

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

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


当然,启动其他应用程序时,如果工作目录当前是应在以后删除的目录,并且在批处理文件退出时继续运行,那么启动这些应用程序时,也将此目录作为工作目录。如果任何应用程序使用此目录,则无法在Windows上删除文件夹当前作为工作目录的文件夹

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


当然,启动其他应用程序时,如果工作目录当前是应在以后删除的目录,并且在批处理文件退出时继续运行,那么启动这些应用程序时,也将此目录作为工作目录。如果任何应用程序使用此目录,则无法在Windows上删除文件夹当前作为工作目录的文件夹

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


当然,启动其他应用程序时,如果工作目录当前是应在以后删除的目录,并且在批处理文件退出时继续运行,那么启动这些应用程序时,也将此目录作为工作目录。如果任何应用程序使用此目录,则无法在Windows上删除文件夹当前作为工作目录的文件夹

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


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

我的话-这是一个模糊的目录,但最终通过将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没有任何区别

因此,解决方案是将-cd从目录中取出,放入批处理脚本在通过上述方法启动其他应用程序之前不会更改的目录中。工作完成了


现在,我只剩下如何关闭所有打开的cmd窗口(或者如果使用/b开关,则关闭taskmgr中的窗口)。这可能是另一个搜索或线程的主题

我的话-这是一个晦涩难懂的词,但最终通过将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和PAR的引号时,问题就出现了。