0

コピーしているファイルが完全にコピーされたかどうかを知らせる何かをスクリプトに追加しようとしています。

基本的に、私は大量のファイルを圧縮してから、ネットワーク上のマップされたドライブに送信しています。次に、ファイルが正常にコピーされたら、元の場所にあるファイルをスクリプトで削除します。スクリプトは完全に正常に機能しますが、コピーが正常に完了しなかった場合に通知するエラー処理を追加する必要があります。

私はこれに約1週間しか入っていないので、vbscriptでエラー処理を使用したことはありません。助けていただければ幸いです。もっと詳しく説明する必要がある場合はお知らせください。私のスクリプトは以下にあります:


Option Explicit


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

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

'zipするファイルが配置されているディレクトリパスを指定します'zipファイルの宛先を指定します'検索するファイル拡張子名を指定します'検索するファイル名のプレフィックスを指定します

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") 

'コピーが成功した後に削除する必要がある元のファイルがある場所

4

1 に答える 1

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
于 2012-07-02T21:34:28.527 に答える