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 个文件被删除..

以便用户知道发生了什么事。删除地图的最快方法是让 de 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 回答