CURL來源檔名=目標檔名

CURL來源檔名=目標檔名

我想下載很多類似名稱的檔案:xxx/1.jpgxxx/2.jpgxxx/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:valueall 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 下正常運作)。

相關內容