Имя исходного файла CURL = имя целевого файла

Имя исходного файла CURL = имя целевого файла

Я хочу скачать много файлов, которые имеют похожие имена: xxx/1.jpg, xxx/2.jpg, xxx/3.jpg, и так далее в C:/Brawa/. Поэтому я пишу:

CURL https://example/xxx/[1-3].jpg -o C:/Brawa/#1.jpg

Теперь я хочу, чтобы имя исходного файла соответствовало имени целевого файла: C:/Brawa/xxx/1.jpg; C:/Brawa/xxx/2.jpg; C:/Brawa/xxx/3.jpg, и т. д.

Я использую командную строку:

CURL https://example/xxx/[1-3].jpg -o --remote-name C:/Brawa/*.jpg

Что-то не работает, но что я сделал не так?

решение1

Я думаю, это должно сработать:

CURL https://example/xxx/[1-3].jpg -o --remote-name C:/Brawa/#1.jpg

решение2

Значения параметров должны быть смежными.Во всех программах Unix или на основе Unix, и в большинстве программ на основе C, если вы указываете опцию со значением, как здесь -o C:/some/path, вы должны сохранить опцию 'flag' и ее значение вместе, вы не можете вставить что-либо еще между ними. Почти во всех случаях вы можете использовать либо последовательные аргументы, как показано, либоодинокийобъединенный аргумент, например -oC:/some/path(для краткой формы) или --output=c:/some/path(добавленный знак равенства для длинной формы, т. е. два дефиса). Это более очевидно в Windows (CMD), где вы обычно используете /flag:valueвсе вместе, что отбивает у вас охоту пытаться вставить что-либо между ними.

Как вы прокомментировали ответ harrymc,--remote-name -o c:/some/path анализируетправильно, но не работает — это потому, что они дают противоречивые инструкции, и он подчиняется только первой. -o c:/some/path --remote-nameтакже будет выполнять синтаксический анализ, но подчиняться только первой (что, если это файл, запишет все URL в тот же файл, оставив только последний, а если это каталог, запись вообще не произойдет).

ПомимоОтвет Анаксунаманаты можешьсменить каталогв нужное место, используйтетолько --remote-name(или -Oзаглавными буквами, в любом случае снетзначение), затем измените каталог обратно. CMD поддерживает pushdи, popdкак и большинство оболочек Unix, поэтому

 pushd c:\brawa\xxx & curl https://example/xxx/[1-3].jpg -O & popd

решение3

Предполагая, что вы используете последнюю версию curl(версия 7.73.0 или выше), вы сможете добавить новую --output-dirопцию для указания выходного каталога, например:

curl https://example/xxx/[1-3].jpg -O --output-dir "C:/Brawa/xxx"

Обратите внимание, что -O(заглавная буква «о») такая же, как --remote-nameв примере выше.

Доступны последние официальные curlдвоичные файлы для Windowsздесьcurlи доступна документация по опциям для самых последних версийздесь.


Обратите внимание, что для динамического создания папок вы можете использовать --create-dirsопцию curl(в разделе man-страницы curl для--output-dir). Однако, похоже, это основано на --output-dirпараметре в примере выше, поэтому изменение этого значения может потребовать дополнительного написания скрипта (мне не удалось получить предложение, указанное вответ harrymcна этот вопрос (работает корректно под Windows 7).

Связанный контент