使用VBScript移动项目时如何跳过打开的文件夹(并跳过打开的文件)?

时间:2013-03-18 17:40:17

标签: vbscript

我制作了一个VBscript来移动Windows文件夹,当脚本到达用户打开的文件夹时,脚本会卡住。有没有办法可以更改我的脚本,以便它跳过打开的文件夹并跳过打开的文件?


Dim fso, directory, item, group, dateStamp, NumberFilesDeleted, text, MoveFoldersErrorInfo, MoveFilesErrorInfo, objLogFile

On error resume Next 

Set fso = CreateObject("Scripting.FileSystemObject")

'Move folders in the temp folder to To_Be_Deleted folder and check for errors
fso.MoveFolder "E:\Projects\temp\*" , "E:\Projects\To_Be_Deleted"
If Err.Number <> 0 Then
   MoveFoldersErrorInfo =  "Error: " & Err.Number & " Error (Hex): " & Hex(Err.Number) & Err.Source & " Description: "  & Err.Description
   Err.Clear
End If

'Move files in the temp folder to To_Be_Deleted folder and check for errors
fso.MoveFile "E:\Projects\temp\*" , "E:\Projects\To_Be_Deleted"
If Err.Number <> 0 Then
    MoveFilesErrorInfo =  "Error: " & Err.Number & " Error (Hex): " & Hex(Err.Number)  & Err.Source & " Description: "  & Err.Description
    Err.Clear
End If

2 个答案:

答案 0 :(得分:0)

VBScript在使用文件的移动/删除操作中不是很可靠。使用DOS命令,它将删除/移动文件,甚至用户打开

您必须自己创建文件夹,这是一个减号。但它保证可以工作,不会给你错误信息。

您的代码可能与此类似:

Set wshShell = CreateObject( "WScript.Shell" )
wshShell.Run "cmd /c mkdir " & strNewDestination & "\" & strFolder, 0, True 
wshShell.Run "cmd /c copy /y " & strFolder & "\*.* " & strNewDestination & "\" & strFolder, 0, True
wshShell.Run "cmd /c del /y " & strFolder & "\*.*", 0, True

答案 1 :(得分:0)

Vbscript在文件操作方面非常慢,如果有可靠的方法来检查文件是否打开,它甚至会进一步减慢进程。您可以忽略打开的文件,使用“on next resume next”,就像在scriptample中一样。

我只知道你想要检查的一个原因,那就是强制关闭文件,例如来自systernals的psfile.exe,但我想你的用户对此不满意。

作为一个外部程序,psfile可以从你的脚本运行并检查,如果需要,可以关闭打开的文件,这样你就可以先在带有/ c参数的处理文件夹上运行它(强制关闭),然后从批处理中移动脚本。