
我想下載很多類似名稱的檔案: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
all run-together,這會阻止您嘗試在中間插入任何內容。
當您對 harrymc 的回答發表評論時,--remote-name -o c:/some/path
解析正確但不起作用——那是因為這些指令給出了相互衝突的指令,並且它只遵循第一個指令。-o c:/some/path --remote-name
也會解析,但只服從第一個(如果這是一個文件,會將每個 URL 寫入同一個文件,只留下最後一個,如果它是一個目錄,則根本無法寫入)。
除了阿納克蘇納曼的回答你可以更改目錄到所需位置,使用僅有的 --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
上面範例中的選項,因此更改此值可能需要額外的腳本(我無法獲得中列出的建議)哈利麥克的回答這個問題在 Windows 7 下正常運作)。