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の作者です)