CURL 源文件的名称 = 目标文件的名称

CURL 源文件的名称 = 目标文件的名称

我想下载大量具有相似名称的文件:,,,xxx/1.jpg等等。所以我写:xxx/2.jpgxxx/3.jpgC:/Brawa/

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

现在我希望源文件的名称与目标文件的名称相对应:C:/Brawa/xxx/1.jpg;;C:/Brawa/xxx/2.jpgC:/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 写入同一个文件,只留下最后一个,如果它是一个目录,则根本无法写入)。

除了Anaksunaman 的回答你可以更改目录到所需位置,使用仅有的 --remote-name(或-O大写,无论哪种方式值),然后更改目录。 CMD 支持pushd并且popd与大多数 Unix shell 一样,因此

 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

适用于 Windows 的最新官方curl二进制文件可用这里最新版本的选项文档curl可供使用这里


请注意,要动态创建文件夹,您可以使用--create-dirs选项curl根据 curl 手册页部分--output-dir)。但是,这似乎是基于--output-dir上述示例中的选项,因此更改此值可能需要额外的脚本(我无法获取harrymc 的回答这个问题在Windows 7下可以正常工作)。

相关内容