ソースファイルのCURL名 = ターゲットファイルの名前

ソースファイルのCURL名 = ターゲットファイルの名前

xxx/1.jpg、、など、すべて似たような名前を持つ多数のファイルを にダウンロードしたいです。そのため、次のようにxxx/2.jpg記述します。xxx/3.jpgC:/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、オプションの「フラグ」とその値を一緒に保持する必要があり、間に何か他のものを挿入することはできません。ほとんどの場合、示されているように連続した引数を使用するか、シングル連結された引数は、-oC:/some/path(短縮形の場合) または--output=c:/some/path(長い形式の場合は等号を追加、つまり 2 つのハイフン) のように使用されます。これは、通常は/flag:valueすべてまとめて実行される Windows (CMD) ではより顕著であり、間に何かを挿入しようとすることは推奨されません。

harrymcさんの回答にコメントしたように、--remote-name -o c:/some/path 解析する正しくは機能しますが、機能しません。これは、これらの命令が矛盾しており、最初の命令にのみ従うためです。-o c:/some/path --remote-nameも解析しますが、最初の命令にのみ従います (これがファイルの場合、すべての URL が同じファイルに書き込まれ、最後の URL のみが残り、ディレクトリの場合、書き込みがまったく失敗します)。

それ以外アナクスナマンの回答あなたはできるディレクトリを変更する目的の場所に、のみ --remote-name(または-O大文字、どちらでもいいえ値)、その後ディレクトリを元に戻します。CMDはほとんどのUnixシェルpushdと同様にサポートしており、popd

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

答え3

最新バージョン (バージョン 7.73.0 以降) を使用している場合は、出力ディレクトリを指定するためのcurl新しいオプションを追加できるはずです。例:--output-dir

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

(大文字の oh) は上記の例-Oと同じであることに注意してください。--remote-name

Windows用の最新の公式curlバイナリが利用可能ここ最新バージョンのオプションドキュメントcurlが利用可能ここ


フォルダーを動的に作成するには--create-dirscurlcurlのマニュアルページのセクションによると--output-dir--output-dirただし、これは上記の例のオプションに基づいているようですので、この値を変更するには追加のスクリプトが必要になる可能性があります(harrymc の回答この質問への回答は Windows 7 で正常に動作しています。

関連情報