2013-01-23 20 views
2
::Stop Windows service 
sc query MyWinService | find "STOPPED" & if errorlevel 1 net stop MyWinService 
::delete the dll 
del /q E:\MyWinService\\* 
for /d %%x in (E:\MyWinService\\*) do @rd /s /q "%%x" 

但是一些dll文件不被刪除,輸出當屬----"ACCESS DENIED"---- 5分鐘後,如果我重新運行相同的命令它執行。我知道,因爲該DLL仍然與Windows服務相關聯,所以錯誤即將到來,但我想刪除這些DLL而無需5分鐘後再次運行該命令。 :(在DOS停止Windows服務後如何刪除的dll/WIN命令提示符/ Windows批處理文件

+0

你可以等待有點像在批處理文件淨停止執行後60秒等一樣是這樣的:「PING 1.1 .1.1 -n 1 -w 60000> NUL「它會等待60秒,是否有可能?然後下一行可能是刪除命令 –

+0

是否有任何方法可以重新運行相同的命令,直到出現」拒絕訪問「錯誤循環? – user2003886

+0

批處理文件或PowerShell的方式? –

回答

1

PowerShell方法:

do 
{ 
    $a = stop-service MyWinService -PassThru 
}while ($a.status -ne "Stopped") 
    do 
{ 
remove-item e:\MyWinService\* -recurse -force -ea silentlycontinue 
} untill ((dir e:\mywinservice).count -gt 0) 
+1

我的代碼是停止g服務成功,但不允許在接下來的5分鐘左右刪除dll。 – user2003886

+0

@ user2003886認爲問題是延遲停止鎖定.dll的服務。 –

2

批處理文件的方式

:Repeat 
del "del /q E:\MyWinService\*" 
if exist "E:\MyWinService\sampledll.dll" goto Repeat 
+0

感謝一噸vahid。我是一個新用戶,所以不能打你的答案。但是thanx哥們。我沒有了解goto聲明。 :d – user2003886

相關問題