Я создал пакетный файл под названием 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-клиент, вы, возможно, сможете и иметь команды в пакетном файле, и использовать переменные среды.
Например с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 GUIсгенерировать пакетный файлдля тебя.
(Я автор WinSCP)