vbscript删除包含多个带进度条的文件的文件夹

时间:2012-04-20 01:57:16

标签: vbscript

希望它们可能是一种可视化删除几个文件的进度的方法,我有一个应用程序在完成后运行清理,它删除的目录几乎是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 Delete file with progress bar

2 个答案:

答案 0 :(得分:1)

我的建议是,如果你想保持脚本灵活,不要这样做。 删除需要很长时间才是GB中的大小,因此对于几个大文件来说,这是不合适的,因为在你启动并运行gui并显示一些进度之前,你的文件已经完成了。你只需显示正在删除的文件名。

如果许多小文件需要更长的时间,进度条会更合适,只需要在IE或其他可以编写脚本的浏览器中进行操作,结果永远不会非常可靠也不美观。我已经看到ActiveX对象提供了这样的进度条,但即使你可以使用它们你也有问题。您需要事先知道要删除的文件数量,并按小步骤划分流程,并以总数的百分比显示进度。 只有删除本身,vbscript处理文件的速度非常慢。 在这里显示文件肯定会减慢过程,你可以显示类似

的内容

删除了1000个文件.. 删除了2000个文件..

以便用户知道发生了什么事。 删除地图的最快方法是通过shell out out让de OS处理它,然后等待进程结束并从那里恢复脚本。

对于其中一些方法,我有样本,抱歉我无法给你并且容易解决所有问题。

答案 1 :(得分: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