2012-04-20 38 views
3

複数のファイルの削除の進行状況を視覚化する方法が期待されていましたが、終了時にクリーンアップを実行するアプリケーションがあります。あなたは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などの代替方法を見つける必要があります。私はそのような方法が存在するかどうか分かりません。 –

答えて

1

私のアドバイスは、あなたがアジャイルyoutは、スクリプトを保存しておきたい場合はそれをしないです。 削除に時間がかかるのはGB単位のサイズではないので、いくつかの大きなファイルの場合、GUIを立ち上げて実行し、いくつかの進捗状況を表示する前からあなたの提唱済みのファイルが適切に処理できるので不適切です。削除されているファイル名を表示するだけです。

多くの小さなファイルがプログレスバーに適している場合は、IEや他のブラウザでスクリプトを実行する必要があります。結果は決して信頼性が高く、美しいものではありません。私はそのような進捗バーを与えるActiveXオブジェクトを見てきましたが、これらを使用することができたとしても問題があります。削除するファイルの数を事前に知っておく必要があります。また、プロセスを小さなステップで分割し、進行状況を合計の割合で表示する必要があります。 これだけでは、削除自体、vbscriptはファイルの処理が非常に遅い限りかかる可能性があります。ここでファイルを表示 は確かに、ユーザが起こって何かがあることを知っているように、あなたが...削除 2000ファイルを削除

千のファイルのようなもの...

を示すことができ、処理が遅くなります。 地図を削除する最速の方法は、OSがそれを世話するようにすることです。その後、プロセスが終了してそこからスクリプトを再開するのを待ちます。

これらのaproachesのいくつかについては、サンプルがあります。申し訳ありませんが、私はあなたと簡単にすべての問題解決の答えを与えることはできません。 ProgressBarの外観上の人々のために

+0

返信ありがとうございます、それはフォルダが削除されている間に8-10​​秒間これをレンダリングする価値があるよりも多くの作業になるでしょう、代わりに、私はちょうど "待ってください"ポップアップを追加し、次にファイルをアドバイスするmsgboxとにかくそれをエレガントにしようとしてくれてありがとう、しかし、ここでは、減少の法則が要因であるので、彼らはただ辛抱強くしなければならないでしょう。 –

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 
関連する問題