2014-11-03 104 views
0

對此做了一個搜索,但沒有多少樂趣。我提出以後,試圖在同一個批處理文件,刪除文件夾:無法從批處理文件夾中刪除文件夾或文件在另一個程序中打開

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

我得到的錯誤「因爲它正由另一個進程的進程無法訪問該文件。」我也無法通過右鍵單擊刪除來刪除文件夾 - 同樣的錯誤。有趣的是,rmdir刪除文件夾的內容。文件夾中沒有任何內容,也沒有任何明顯的訪問。

我已經使用Unlocker - 顯示沒有進程。也使用過程資源管理器,搜索文件夾名稱(有/無完整路徑) - 沒有搜索結果。

當我重新啓動機器時,我可以刪除它。不確定是否取決於用戶權限。我從中看到,用戶只有讀/寫不完全控制權。 (對不起 - 用戶權限不夠好 - 特別是在Windows上!)。但是 - 當然不能這樣,因爲我可以在重新啓動時刪除它。

該文件夾位於非OS驅動器上。

我很難過 - 有什麼想法嗎?

回答

1

如果任何應用程序當前使用此文件夾作爲工作目錄,則無法在Windows上刪除文件夾。

在你的情況下,我想批處理文件使用命令cd將工作目錄更改爲創建的目錄。因此,在使用命令rmdir刪除此目錄之前,您需要再次使用cd來設置不同的工作目錄。

啓動其他應用程序當然是不好的主意,工作目錄當前應該是以後應該刪除的目錄,並且在批處理文件退出時繼續運行,因爲已啓動的應用程序也將該目錄作爲工作目錄。

0

我的話 - 這是一個晦澀的,但最終通過代碼把rmdir放在不同的地方找到答案。我發佈這裏,以防萬一任何人遇到相同的...

基本上,我打電話cmd提示並啓動外部exe的同時在所述文件夾中。後來,我用TaskKill強行關閉了exe文件,但是這使得cmd控制檯在我試圖刪除的目錄的路徑上打開。我會試着更清楚....

雖然批處理腳本是在目錄(如C:\ WINDOWS \腳本\啓動),我用下面的命令:

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

其中,膨脹後,翻譯爲,對如:

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

我用這個,因爲,從閱讀,似乎是在做下面的命令窗口中的錯誤失敗:

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

問題出在您必須對exe和參數(例如空格處)都使用引號時。 Windows沒有正確讀取它。因此必須使用最高層來啓動這些應用程序。

問題被使用時:

taskkill /f /im trbshtr.exe 

的exe被殺,但該命令提示不是。在開始命令中使用/ b沒有區別。

因此,解決方法是 - 將cd從目錄轉換爲批處理腳本在通過上述啓動其他應用程序之前不更改的目錄。作業已完成....

現在,只是如何關閉所有打開的cmd窗口(或者如果我使用/ b開關,在taskmgr中)。這可能是另一個搜索或線索的主題!

相關問題