質問: バッチスクリプトを使用して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アドレスとポート番号に接続していません。これらのコマンドを手動で入力した場合、完全に機能していました。このコードに対してどのような修正を行う必要がありますか?
回答: 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:test11@142.245.30.165" ^ "put ""%mypath%""" ^ "exit" pause winscpを使用したスクリプトの概要については、以下を参照してください。 https://winscp.net/eng/docs/guide_automation windows ftpスクリプトをwinscpスクリプトに変換する のガイドもあります。(私はwinscpの作者です)