以下のコードを含む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アドレスとポート番号に接続していません。
これらのコマンドを手動で入力した場合、完全に機能していました。このコードに対してどのような修正を行う必要がありますか?
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クライアントを使用している場合は、バッチファイルにコマンドを含め、環境変数を使用できる場合があります。
たとえば、 WinSCP :
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の作者です)