WSHでFTP使おうとすると、FTPコマンドをWScript.ShellでRunする、 みたいなのしか無いかと思ってましたが、 Shell.Appilcationで素敵に解決できるみたいです。

Shell.Application は Explorer 自身みたいなObject。 んー、確かに良く考えると Explorer で普通に FTPの内容見れたりアップロードできたりするもんね。 それを script から使う、と。

こんな感じ。

strSrc  = WScript.Arguments(0)
strDest = "ftp//:user:pass@yourserver/yourdirectory/"
 
With CreateObject("Shell.Application")
  Set objDest = .NameSpace(strDest)
  For Each objItem In .NameSpace(strSrc).Items
    objDest.CopyHere objItem
  Next
End With

CopyHere は、非同期実行らしいので、でかいファイルを沢山Uploadすると時は、 適当にsleepするか、アップロード状況を確認する必要があるっぽい。

CopyHere の第二引数には以下が指定できるみたい。

'「元に戻す」コマンドで操作を取り消せるようになる。 
Const FOF_ALLOWUNDO = &H40
'ワイルドカードを指定したとき(*.*)、フォルダを対象外にする。 
Const FOF_FILESONLY = &H80
'上書き確認などのダイアログが表示されなくなる。 
Const FOF_NOCONFIRMATION = &H10
'フォルダを作成する確認ダイアログが表示されなくなる。
Const FOF_NOCONFIRMMKDIR = &H200
'コピーや移動先に同名のファイルが存在する場合、リネームする。 
Const FOF_RENAMEONCOLLISION = &H8
'経過ダイアログが表示されなくなる。 
Const FOF_SILENT = &H4
'ファイル名の表示されない、シンプルな経過ダイアログが表示される。
Const FOF_SIMPLEPROGRESS = &H100

なるほどねー。 ちなみに、逆にやればFTPダウンロードになります。

作成日 2007-05-18 (金) 23:27:53

投稿者メソ | パーマリンク | トラックバック(337) | コメント(0)

Tag: WSH



URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White