Вы должны поместить команды 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)