2013-10-29 53 views
0

運行大量的硒測試會導致臨時文件夾在firefox和'scoped-dirs'的情況下用很多'anonymous-web-driver'配置文件填充鉻的情況。使用批處理腳本在硒測試中清除臨時文件夾

爲了解決這個問題,我想出瞭如下的批處理腳本代碼

@echo off 
cd %temp% 
for /d %%D in (*) do rd /s /q "%%D" 
del /f /q * 

我有以下問題與它

1)它成功地做工作,但在批量腳本運行網絡驅動器,因爲cd %temp%不會導航到臨時文件夾,所以它會刪除當前文件夾中的所有文件。

有沒有辦法確保第3行和第4行只在當前目錄是temp時執行。由於腳本存儲在網絡驅動器上,我想確保即使它意外運行,它也會導致任何意外刪除。 2)由於某些文件夾無法在temp中刪除,所以cmd窗口掛在那裏,說這些文件夾無法刪除。我無法刪除的文件很好,但我想關閉cmd窗口因爲我有數百個測試運行,每個測試都會打開一個cmd窗口,非常難看。

我試過以下Runtime.getRuntime().exec("taskkill /f /im cmd.exe");它工作正常,除了以下事實,它殺死所有cmd進程還有其他cmd進程有一些work.Are有方法,我可以關閉只有運行時打開的cmd窗口執行電話?

+0

http://stackoverflow.com/questions/10716803 –

+0

@rohankamat:這正是我從第一個地方通過批處理腳本獲得的地方。但我的問題在這裏有點不同。 –

+0

@DavidCandy:你能給我一個例子嗎?如果存在(文件夾的路徑),然後代碼,但它做同樣的事情,我試過。 –

回答

1
setlocal enableextensions 

    pushd "%temp%" 
    if not errorlevel 1 (
     rmdir . /s /q >nul 2>nul 
     popd 
    ) 

由於當前目錄不能被刪除,它會刪除所有沒有鎖定的文件和目錄。

+0

很好用..這個概念背後是什麼?只是想知道 –

+0

對於第二部分,我找不到解決方案。通過使用線程信號並在工作完成後關閉所有cmd進程來克服它。 –

+1

將當前目錄「存儲」到內存中並更改爲指示的驅動器/目錄,如果無法完成,則會生成錯誤級別。如果沒有錯誤級別,請嘗試遞歸移除當前目錄。它開始刪除下面的任何東西(文件,文件夾)。一旦完成,嘗試刪除當前的目錄,但由於我們正在使用它,它不能被刪除。然後'popd'從內存中檢索存儲的目錄以返回到原始目錄。 –

0
if not "%temp%"=="%CD%" goto :eof 

只要批處理文件命中此行,它就會測試當前目錄是否等於臨時目錄,如果不存在,則退出批處理文件。

相關問題