Как мне FTP несколько файлов из командной строки?

25

Я хотел бы отправить по FTP содержимое каталога, но я не могу найти правильный способ использовать подстановочный знак. Кажется, что это было бы обычным делом; весь мой подход неверен?

Команда

ftp -s:"C:\Scripts\ftp01" ftpserver.domain.com

Сценарий, который вызывается ниже. Обновлено за биллинкк.

username
password
ascii
cd "/destinationfolder"
lcd "C:\Backup"
mput *.bak
close
quit

Сценарий запускается, файлы не копируются, а сеанс FTP остается открытым.

230 User username Logged in Successfully
ftp> ascii
200 TYPE Command OK A
ftp> cd "/destinationfolder"
250 Directory successfully changed to "/destinationfolder"
ftp> lcd "C:\Backup"
Local directory now C:\Backup.
ftp> mput *.bak
mput 9829980.bak? close
mput 6406766.bak? quit
ftp>
ftp>

Вывод

Мне нужно было добавить флаг, чтобы подавить команду PROMPT:

ftp -i -s:"C:\Scripts\ftp01" ftpserver.domain.com
mmcglynn
источник

Ответы:

36

Перед выполнением mputкоманды введите promptкоманду для отключения интерактивного режима. Как только он выключен, он не должен просить вас подтвердить каждый файл для mput(или mget).

Ƭᴇcʜιᴇ007
источник
3
Для тех, кто интересуется «каков синтаксис этой promptкоманды», вы буквально просто набираете «приглашение», и оно переключает подсказку с истинного на ложное.
Ноумен
2
Еще один способ отключить интерактивные подсказки - использовать -iфлаг в самой ftpкоманде (например ftp -i -s:"C:\Scripts\ftp01" ftpserver.domain.com). Документы описывают этот -iпараметр следующим образом: «Отключает интерактивные запросы при многократной передаче файлов».
Джесси Уэбб
3

Я никогда не пытался использовать путь для локальных папок, но я сделал это, изменив локальный каталог ( lcd):

username
password
ascii
cd "/destinationfolder"
lcd Backup
mput *.bak
close
quit
billinkc
источник
2

Попробуйте вставить строку prompt nнепосредственно перед mputстрокой

Горацио
источник
1

Используйте mputкоманду, чтобы поместить несколько файлов.

Крис С
источник
1
Да, это то, что я использую
mmcglynn
За брандмауэром (особенно SOHO или дешевые устройства бизнес-класса)? Встроенный в ftpWindows не поддерживает режим PASV, поэтому передача будет зависать и никогда не завершится.
Крис С
1

Если у вас есть права администратора, вы можете установить ncftpput . Он прост в использовании и отлично подходит для рекурсивных загрузок по FTP. Переключатель для рекурсивной передачи есть -R.

Программное обеспечение включено в большинство дистрибутивов Linux. Для Windows это устанавливается с Cygwin .

Тим Хэгеле
источник
1

Как отметил Тим Хэгеле, ncftp делает это очень гладко в Linux, если вы можете и хотите его установить:

sudo apt-get install ncftp
ncftp -R ftpserver.domain.com . /Scripts/ftp01
Коллин Андерсон
источник
0

Это сценарий, который я использовал и который работал для меня.

Для ftp1.bat (скрипт):

ftp -i -s:\tmp\ftp.txt

Для ftp.txt (скрипт):

Open ip
username
password
prompt
lcd C:\YourFolder\YourFolder
binary
cd /DestinationFolder
prompt
mput *.bak
cd ..
disconnect
quit

Может быть, есть части, которые не нужны, но я помещаю это, как это работает для меня, надеюсь, это поможет

Адриан Чакон
источник