1

Я создал командный файл с именем 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 ответ1

4

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .