バッチ スクリプトを使用して FTP サーバーにファイルをアップロードするにはどうすればよいですか?

バッチ スクリプトを使用して FTP サーバーにファイルをアップロードするにはどうすればよいですか?

FTP_automation.bat以下のコードを含むというバッチ ファイルを作成しました。

SET MyPath=E\PGP\test_pg
ftp
open 142.245.30.165 21
TESTA9MS
test11
binary
put %MyPath%
quit
Pause

を実行しているときにFTP_automation.bat、パラメータを渡しているファイルがアップロードされません。

バッチ ファイルに記載されている時間が過ぎるとスクリプトは停止しftp、バッチ ファイルで渡した IP アドレスとポート番号に接続されません。

これらのコマンドを手動で入力すると、完璧に動作しました。このコードにはどのような修正を加えるべきでしょうか?

答え1

ftpコマンドは別のファイルに置く必要があります。ターミナルで入力する行を.batファイルに入れても、同じように動作するとは期待できません。.batファイルには Windows コマンドのみを含めることができます。バッチ ファイルからコマンドを実行するとftp、コマンドを待機します。ファイルについては認識されない.batため、そこからコマンドを読み取ることはできません。

したがって、コマンドを別のテキスト ファイル (例ftp.txt) に保存します。

open 142.245.30.165 21
TESTA9MS
test11
binary
put E\PGP\test_pg
quit

そして、次のようにファイルから実行します.bat:

ftp -s:ftp.txt
pause

動的ファイル名 (環境変数から) を本当に使用する必要がある場合は、オンザフライでテキスト ファイルを作成する必要があります。 はftp変数をサポートしていません。


より優れた FTP クライアントを使用すると、バッチ ファイルにコマンドを記述し、環境変数を使用することもできる可能性があります。

例えばウィンSCP:

set MyPath=E\PGP\test_pg

winscp.com /command ^
    "open ftp://TESTA9MS:[email protected]" ^
    "put ""%MyPath%""" ^
    "exit"

pause

WinSCP を使用したスクリプトの概要については、以下を参照してください。
https://winscp.net/eng/docs/guide_automation

ガイドもありますWindows FTP スクリプトを WinSCP スクリプトに変換するWinSCP GUIも使用できますバッチファイルを生成するあなたのために。

(私はWinSCPの作者です)

関連情報