2013-03-18 77 views
0

我做了一个VB脚本来移动Windows文件夹,并且脚本到达用户打开的文件夹时卡住了。有没有办法改变我的脚本,以便跳过打开的文件夹并跳过打开的文件?如何在使用VBScript移动项目时跳过打开的文件夹(并跳过打开的文件)?


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 
+1

你为什么要重塑'robocopy'? – 2013-03-18 19:18:18

回答

0

VBScript是与fileoperations非常缓慢,如果有检查,如果一个文件被打开它甚至会进一步拖慢进程的可靠方法。你可以忽略这些打开的文件,就像你在scriptsample中做的那样,“在下一次错误时恢复”。

我知道只有一个原因,为什么你想检查,这是迫使文件关闭与像sysfile这样的实用工具,如psfile.exe,但我想你的用户不会满意。

作为一个外部程序psfile可以从你的脚本运行并检查,如果需要关闭打开的文件,所以你可以先用/ c参数(force close)在处理的文件夹上运行它,然后从批处理的脚本。

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 
相关问题