Загрузить папку с cURL и FTP с помощью пакетного файла на Windows?

Я пытаюсь загрузить всю папку, включая подпапки и файлы в папку на моем сервере из пакета для Windows (.Bat-файл.

ниже есть команда, у меня есть для загрузки части...

curl -T E:Serverbootstrap3_gh_pages -u USER:PASSWORD ftp://domain.com/bootstrap/

это ошибка, которую я получаю

curl: Can't open 'E:Serverbootstrap3_gh_pages'!
curl: try 'curl --help' for more information

Если я пытаюсь сделать только 1 файл, он работает нормально, мне нужно как-то перебирать и делать все папки и файлы, любая помощь, пожалуйста?

я погуглил и попробовал несколько не очень хороших примеров не повезло на этот точный вопрос пока нет

16
задан JasonDavis
13.02.2023 14:09 Количество просмотров материала 3608
Распечатать страницу

4 ответа

вы, наверное, уже поняли, но, по крайней мере, для других гуглеров, как я:

проблема в том, что curl не циклически перемещается по каталогу, нет возможности загрузить весь каталог, и он не поддерживает *-расширение. Поэтому решение, которое я получил, - написать a .bat скрипт. С помощью этого ответа https://stackoverflow.com/a/9429985

@echo off 
set localdir=C:\something
set ftphost=your.ftp.host.com
set ftpuser=yourftpuser
set ftppass=yourftppassword
set ftpdir=target/directory/on/server

setlocal enableDelayedExpansion

for /F %%x in ('dir /B/D %localdir%') do (
  set FILENAME=%localdir%\%%x
  curl -T !FILENAME! ftp://%ftphost%/%ftpdir%/ --user %ftpuser%:%ftppass%
)
6
отвечен zzanzare 2023-02-14 21:57

так как curl был написан для *nix (unix), могут возникнуть проблемы с указанием рабочих команд из командной строки Windows. Это в основном связано с обработкой " (двойные кавычки) и \ (обратная косая черта).

простая вещь, которую вы можете попробовать:

  1. заключайте имена в кавычки.
  2. Escape обратные косые черты, добавив еще одну обратную косую черту перед каждым желаемым обратная косая черта.

вот так:

curl -T "E:\Server\bootstrap3\_gh_pages\" -u USER:PASSWORD ftp://domain.com/bootstrap/

вы также можете попробовать использовать косую черту такой, который может работы:

curl -T "E:/Server/bootstrap3/_gh_pages/" -u USER:PASSWORD ftp://domain.com/bootstrap/



Другая вещь, которую вы могли бы попробовать использовать -K (или --config=) переключатель параметров командной строки для curl (некоторая полезная информация может быть найдена здесь).

в основном, вы размещаете всю командную строку аргументы в файле и используйте -K file (или --config=file), чтобы сказать curl, где найти аргументы.

Итак, вы создаете файл (пример: test.txt), который имеет каждый параметр командной строки в отдельной строке, как это:

-T "E:\Server\bootstrap3\_gh_pages\"
-u USER:PASSWORD
--url=ftp://domain.com/bootstrap/

затем запустите curl следующим образом:

curl -K test.txt
  or
curl --config=test.txt




если ничего из этого не работает, вам может потребоваться выполнить команду curl из окна терминала Cygwin в Windows. Видеть этот сайт для получения информации об использовании curl с Cygwin в Windows.

1
отвечен Kevin Fegan 2023-02-15 00:14

не полезно для Windows, но на Linux вы можете комбинировать curl и find:

find /server/ -exec curl -T {} ftp://some-ftp-site/folder/ --user user:pass \;
1
отвечен VorobeY1326 2023-02-15 02:31

Как и решение Linux, опубликованное ранее, в Windows вы бы сделали:

forfiles /p C:\uploads / c "curl.exe-C - # - T @путь ftp://some-ftp-site/folder/@file -- user пользователь: pass"

0
отвечен Hames 2023-02-15 04:48

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх