VBSでFTP

あるWindowsサーバのログファイルを別サーバへ定期的にFTP送信したいとの事で、VBSで簡単なスクリプトを作りました。これまでは、バッチやスクリプトでFTP用のコマンドファイルを作り、FTP -S:ファイル名で実行するような感じだったのですが、最近は、スクリプトだけでできるようです。
下記例は、D:\log\tempというディレクトリに一つのzipファイルが置かれており、そのファイルを送信するという前提です。
ちなみにzipファイル自体の名前でstrSrcを指定するとCopyHereが勝手にZipの中身を解凍した状態で送信されます。。そういや、CopyHereでzipの圧縮や解凍もできるからそういう事なんでしょうか。。恐るべしCopyHere

'FTP送信指定
Const HostName = "192.168.1.101"
Const UserID = "userid"
Const UserPass = "password"
Const DestDir ="Upload"

Dim strDest,strSrc, UpFileName, UpFileSize, oSH, objDest

strSrc="D:\log\temp"

strDest = "ftp://" & UserID & ":" & UserPass & "@" & HostName & "/" & DestDir

Set oSH = CreateObject("Shell.Application")
Set objDest = oSH.NameSpace(strDest)

WScript.Echo "[" & strSrc & "]FTP転送対象"

For Each objItem In oSH.NameSpace(strSrc).Items
WScript.Echo "[" & strSrc & "]FTP転送ファイル [" & objItem.Name & "]," & objItem.Size
	UpFileName = objItem.Name
	UpFileSize = objItem.Size
    '&H04 + &H10は効かない・・・
	objDest.CopyHere objItem, &H04 + &H10
Next
'非同期なのでスリープで待つ・・・
Wscript.Sleep 15000

'リモートディレクトリの送信ファイル存在確認
Dim CheckOK, iWaitCnt
CheckOK = False
For iWaitCnt = 0 To 10
Set objDest = oSH.NameSpace(strDest)
    For Each objItems In objDest.Items
		If UpFileName = objItems.Name Then
    		'リモートファイルのサイズは取れないみたい・・・
       		WScript.Echo "[" & strSrc & "]FTP転送ファイル確認 [" & objItems.Name & "]," & objItems.Size
	   		CheckOK = True
	   		Exit For
		End If
    Next
	If CheckOK = True Then
		Exit For
	End If
    Wscript.Sleep 10000
    WScript.Echo "FTP転送待ち[" & iWaitCnt & "]" 
Next
If CheckOK = False Then
	WScript.Echo "FTP転送に失敗しました " & Err.Number
Else
	WScript.Echo "FTP転送正常終了"
End If

でも、このCopyHere、FTPでは非同期のようで送信終了タイミングが解らなくスリープ待ちせざるを得なかったり、上書き確認のダイアログがどうしても消せない等、ちょっとクセが強いです。。
今回の要件的にはまあ上書きの対処は見切りました。確実性が必要な処理だとこのやり方はしないかな~