VBscript:验证文件是否已完全复制/错误处理

时间:2012-07-02 19:37:47

标签: error-handling vbscript copy verify

我正在尝试在我的脚本中添加一些东西,让我知道我复制的文件是否已被完全复制。

基本上我正在制作一堆文件,然后将它们发送到网络上的映射驱动器。然后,我的脚本会在成功复制后删除原始位置的文件。脚本工作得很好,但我只需要添加一些错误处理,如果副本没有成功完成,我会知道。

我从来没有在vbscript中使用过任何错误处理,因为我只用了大约一个星期,所以任何帮助都会非常感激。如果我需要更深入地解释,请告诉我。我的脚本可以在下面找到:


Option Explicit


Dim sDirectoryPath, sDestinationPath, sOutputFilename, Shell, sFileExt, sFilePrefix

shell = WScript.CreateObject("WScript.Shell")

'指定要压缩文件所在的目录路径 '指定压缩文件的目的地 '指定要查找的文件扩展名 '指定要查找的文件名前缀

sDirectoryPath = "C:\Testscripts\"
sDestinationPath = "C:\Script\files\outzips\"
sOutputFilename = shell.ExpandEnvironmentStrings("%COMPUTERNAME%")
sFileExt = ".evtx"
sFilePrefix = "Archive*"


Dim Command, RetVal
Dim d : d = Date() 
Dim dateStr : dateStr = Year(d) & "-" & Right("00" & Month(d), 2) & "-" & Right("00" &   Day(d), 2)
Dim t : t = Time()
Dim timeStr: timeStr = Hour(t) & "-" & Right("00" & Minute(t), 2) & "-" & Right("00" & Second(t), 2)



Command = """C:\Program Files\7-zip\7z.exe"" a  " & sDestinationPath & sOutputFilename & "-" & dateStr & "-" & timeStr & ".zip " & sDirectoryPath & sFilePrefix & sFileExt


        RetVal = Shell.Run(Command,0,true)

Wscript.Sleep 2000



Dim objFso  

Set objFSO = CreateObject("Scripting.FileSystemObject")

'将文件从一个路径复制到另一个路径

objFSO.CopyFile "C:\script\files\outzips\*.zip" , "G:\CopyTestFolder\"

If err.Number <> 0 Then
WScript.Echo "An error occured copying this file, re-attempt copy"
Else
WScript.Echo "No errors occured, copy successful"
End If
On Error GoTo 0

'文件成功压缩并复制后指定删除的位置 '来自旧的zip文件,以及要删除的本地存档文件夹路径

objFSO.DeleteFolder("C:\Script") 

'可以删除整个存档文件夹,也可以删除文件夹

中的.zip文件
objFSO.DeleteFile("C:\Testscripts\Archive*.evtx") 

'复制成功后需要删除原始文件的位置

1 个答案:

答案 0 :(得分:1)

使用7-zip上的't'命令验证完整性。如果'0'没问题,否则错误。

例如:

Set myshell = WScript.CreateObject("WScript.Shell")
Dim cmd, result
cmd = """C:\Program Files\7-zip\7z.exe"" t C:\NOT_a__valid_zip_file.zip"
result = myshell.Run(cmd,0,true)
Wscript.Echo "Not a valid zip file:  " & result

cmd = """C:\Program Files\7-zip\7z.exe"" t C:\a_valid_zip_file.zip"
result = myshell.Run(cmd,0,true)
Wscript.Echo "A valid zip file:  " & result

输出:

PS> cscript.exe .\7z.vbs
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

Not a valid zip file:  2
A valid zip file:  0