3

いくつかのファイルの削除の進行状況を視覚化する方法になることを望んでいました。完了時にクリーンアップを実行するアプリケーションがあり、削除されるディレクトリはほぼ 3GB であるため、次のような進行状況バーのポップアップがあると便利です。を使用するかどうかを示すもの

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 進行状況バーでファイルを削除

4

2 に答える 2

1

私のアドバイスは、あなたがあなたのスクリプトを機敏に保ちたいのなら、それをしないことです。削除に時間がかかるのはGB単位のサイズではないため、いくつかの大きなファイルの場合は、GUIを起動して実行し、進行状況を表示する前に、ファイルの削除をすでに実行できるため、適切ではありません。削除中のファイル名を表示するだけです。

プログレスバーに時間がかかる小さなファイルがたくさんある場合は、スクリプトを作成できるIEまたは別のブラウザで実行するだけで、信頼性も美しくもなりません。このようなプログレスバーを提供するActiveXオブジェクトを見たことがありますが、これらを使用できる場合でも問題が発生します。削除するファイルの数を事前に知っておく必要があります。プロセスを小さなステップに分割し、進行状況を全体のパーセンテージとして表示します。これだけでも、削除自体と同じくらい時間がかかる可能性があり、vbscriptはファイルの処理に非常に時間がかかります。ここにファイルを表示すると、確かにプロセスが遅くなります。次のように表示できます。

1000ファイルが削除されました。2000ファイルが削除されました。

ユーザーが何かが起こっていることを知ることができるようにします。マップを削除する最も速い方法は、OSにマップを処理させ、プロセスが終了するのを待って、そこからスクリプトを再開することです。

これらのアプローチのいくつかについて、私はサンプルを持っています、申し訳ありませんが、私はあなたに与えることができず、簡単なすべての問題を解決しました。

于 2012-04-20T10:19:50.980 に答える
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
于 2012-05-12T09:35:55.827 に答える