我想下载大量具有相似名称的文件:,,,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 写入同一个文件,只留下最后一个,如果它是一个目录,则根本无法写入)。
除了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下可以正常工作)。