2012-04-20 113 views
3

希望他們可能是可視化的幾個文件的刪除進度的方式,我認爲當它完成運行清理的應用程序,它會刪除該目錄幾乎是3GB,所以這將是很好,有一個類似顯示如果使用VBSCRIPT刪除文件夾中包含多個文件進度條

Const FOF_CREATEPROGRESSDLG = &H0& 

strTargetFolder = "C:\OfficeTemp" 

Set oShell = CreateObject("Shell.Application") 
Set objFolder = oShell.NameSpace(strTargetFolder) 

objFolder.CopyHere "OfficeTemp\*.*", FOF_CREATEPROGRESSDLG 

按說你可以用SHFileOperation實現這個進度條彈出,但我只看到的例子在C使用此++,沒有人做到了這一點用VBScript?

C++ Win32 API Delete file with progress bar

+1

是,'SHFileOperation'會做到這一點,但是這是一個原生Win32函數,哪些不能直接從VBScript調用。你必須找到另一種方法,比如WMI。我不知道這種方法是否存在。 – 2012-04-20 02:45:00

回答

1

我的建議是,如果你想保持YOUT腳本敏捷不這樣做。 這不是在GB可將長到刪除,這樣的一對夫婦的大文件是不適合的大小,因爲你之前,你的圖形用戶界面和運行,顯示了一定的進展您filedelition媒體鏈接可以做到。你剛剛顯示文件名,因爲它正在被刪除。

如果是需要更長的時間進度條會更適合許多許多小文件,只需要做到這一點在IE或其它瀏覽器,你可以腳本,結果永遠是非常可靠的,也不美麗。我已經看到了提供這種進度條的ActiveX對象,但即使可以使用這些對象也有問題。您需要事先知道需要刪除的文件數量,並以小步驟劃分進程並顯示進度佔總數的百分比。 這可能只需要刪除本身,vbscript在處理文件時非常緩慢。 顯示文件在這裏肯定會慢下來的過程中,你可能會顯示類似

1000個文件被刪除..刪除 2000文件..

讓用戶知道有事情發生。 確實刪除了地圖上的最快方法是由脫殼而出恩讓德OS照顧它,然後等待進程結束,並從那裏恢復腳本。

對於其中的一些aproaches我有樣,對不起,我不能給你,易allproblemssolved答案。

+0

感謝您的答覆,這將是更多的工作,比它的價值來呈現這一點爲8-10秒,而文件夾刪除,所以不是我只是增加了一個「請稍候」彈出,那麼該建議的文件MSGBOX一旦完成就會被刪除,謝謝不過只是爲了讓它更加優雅,但是這裏的收益遞減規律,所以他們只需要耐心等待。 – 2012-04-29 16:15:18

0

對於人們對外觀的進度而複製,我發現這同時,測試工作Win7上

Const FOF_CREATEPROGRESSDLG = &H0& 

strTargetFolder = "D:\Scripts" 

Set objShell = CreateObject("Shell.Application") 
Set objFolder = objShell.NameSpace(strTargetFolder) 

objFolder.CopyHere "C:\Scripts\*.*", FOF_CREATEPROGRESSDLG 
相關問題