WEB Win標準装備FTPexeを使いVBAで操作-6

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

MS-DOSコマンドプロンプトでFTPexeを操作する

  • VBAで操作する前にWindowsに標準装備されているftp.exeを実際に操作してみる。
  • 既にサーバ側にファイルをお持ちの方は実行動作確認テストをしてから行って下さい 。
  • [バッチファイル](.bat又は.cmd)。
  • [コマンドファイル](.txt)スクリプトファイル の作成とバッチの実行。
  • 既にサーバ側にファイルをお持ちの方は実行動作確認テストをしてから行って下さい 。

  • アップするファイルを用意。
  • 例ではhtmファイル を3つ用意。

  • バッチファイル名は任意でOK
  • テキストファイルで作成後 拡張子を.batに変更。
  • 例ではtest.batとした。
  • 同じ階層にコマンドファイルを作成。
  • 例ではftptest.txtとしたが任意ファイル名でもOK 。

  • バッチファイルは 右クリックの編集で簡単に編集可能。

  • バッチファイル(シェルスクリプト)
  • test.batの内容
  • echo off
  • ftp -vni -s:ftptest.txt
  • echo offはメッセージを非表示する
  • ①ftp ②-vni
  • ①ftp.exeを起動
  • ②コマンド組み合わせ(下表)
  • ③-s:④ftptest.txt
  • ③コマンドファイル指定(下表)
  • ④ftptest.txtを指定
ftp-Windowsコマンド詳細
コマンド 動作 記述例
-a データ接続バインドのローカル・インターフェース使用 -a
-A 匿名ログオン -A
-D コマンド表示(デバッグ) -D
-G ファイル名[globbing]無効 -G
HOST サーバーコンピュータ名及びIPアドレスを指定 HOST
-I 対話型プロンプト非表示 -I
-N 自動ログオン機能無効(初回接続) -N
-S コマンドファイル指定 -S:XXX.txt
-V サーバー応答非表示 -V
-W 転送バッファサイズ指定(デフォルト4096byte) -W:3000

  • コマンドファイル ftptest.txtの内容
    ①open jp-ia.com
    ②user ***** *******
    ③hash
    ④ascii
    ⑤cd www/test/
    ⑥lcd C:\Temp
    ⑦mput *.htm
    ⑧quit
    ①サーバオープン
    ②アカウント及びパスワード
    ③MS-DOSに#で実行状況を表示(プログレスバー)
    ④アスキーモード指定
    ⑤サーバ上のディレクトリ移動(サーバの殆どが多言語非対応・UNIX系なので大文字小文字区別で英数のみで指定)
    ⑥ローカル(UPするフォルダ)移動。こちらはローカル上なので日本語や空白は認識※1する。
    ⑦複数ファイルをアスタリスクで指定(複数指定方法は「a*」等自由だが拡張子を無視した場合は画像ファイル等のバイナリモードでの実行が必要なものもあるので注意が必要)
    ⑧終了
    コマンド詳細は前ページ
  • *.jpg *.gif *.png など画像ファイルの場合は ④でバイナリモード指定 又、フォルダ(ディレクトリ)単位でのUPは出来ないのでサーバ側に該当フォルダが無い場合は先ず作成してからUPすること(すべてコマンドファイルで可能です)。
  • どうしてもエラーになる場合は⑧のquitを消してみる。
  • それでも判明しない場合は上記プラス+バッチファイルの-vniの箇所を-nに変更して実行。
  • 意味が判らない場合は最初から読んで下さい。
  • ※1コマンドファイル上では認識しますがバッチファイル(シェルスクリプト)では認識しません。

  • アップロード先のディレクトリー (現在は空 )。

  • バッチファイルの実行。
  • 右クリック・開く又はダブルクリック。
  • 途中で停止したい場合 キーボード[Ctrl] + [C] 。

  • 実行後のアップロード先ディレクトリー 。

  • バッチファイルが コマンドファイルの内容を読み取り 実行したMS-DOSの内容 。
  • この方法は理解する上でのテスト的なものです。
  • この方法では以下の問題に直面致します。
  • ①UPするディレクトリが複数又は大量にある場合すべてのディレクトリを指定した場合、無駄がある。
  • ②コマンドファイルにパスワードを記述するためセキュリティ不全 仮にコマンドファイルが複数存在する場合、その個々のコマンドファイルにアカウントとパスワードがセットで記述されており何処に何個あるか?等、管理が大変。
  • ③FTPexeはアップロード又はダウンロード中エラーが起きた場合(コネクション切断)でも再実行しない その為、完全にアップロード又はダウンロード出来たかは実際に確認しないとならない。
  • そこで①~③までの問題を8~9割、解決するのが最終章です。
  • プログラマーの方は別としてここまでが把握出来ないと最終章では難しくなるのできちんと把握が必要です。
  • 最終章に行く前にタスク登録方法もご覧下さい。

 

2000年01月01日|[VBサンプルコード]:[WEB]