我想很多人對CMD如何下載檔案感到好奇,
其實主要有兩種方式...
使用WGET、VBS兩種方式可以下載,
FTP不能下載HTTP在此不提~
但是網路上的說明還沒有一致的辦法,
糖果弄了一個只有單CMD就可以下載檔案的辦法喔!!
所以糖果就來整理一下三大方式~
WGET的使用方式
首先我們來介紹WGET的優缺點,
WGET的優點:
- 可以設定等待時間
- 可以設定重試次數
- 可以指定檔案名稱
- 可以下載轉址
- 可以下在HTTPS等等許許多多協定、FTP也含在內
- 會顯示下載進度、速度、剩餘時間
WGET的缺點:
- 需要下載wget.exe因為Windows沒有內建...
- 這下出現雞生蛋、還是蛋生雞的問題,沒有wget.exe就不能下載其他檔案...
- 檔案佔空間,比起純文字的CMD他確實大多了...
wget.exe檔案下載點
users.ugent.be空間:
下載檔案後需與CMD文件放在一起
CMD內容
wget -t 1 -T 1 -O index.txt http://candy-sky.net/
pause
說明:-t是重試次數1次、-T是逾時時間1秒、-O指定檔名
VBS的使用方式
VBS的優點:
- 可以指定檔案名稱
- 可以下載轉址
- 檔案體積超小
- 不需要先下載exe檔案
VBS的缺點:
- 需要調用VBS...
- 如果想要共用函示庫需要好幾行CMD程式碼
- 沒辦法顯示下載進度與時間,大檔案容易誤會卡住
- 不能設定重試次數與逾時時間
- 雖然不需要exe檔案但是還是要用cmd預先生成vbs文件
不共用down.vbs檔案直接調用的方式
這是用在只有一個檔案要下載的時候~
down.vbs內容
Download "http://candy-sky.net/", "index.txt"
Function Download(strUrl, strFile)
Set xPost = CreateObject("MSXML2.ServerXMLHTTP")
xPost.Open "GET", strUrl,0
xPost.Send()
Set sGet = CreateObject("ADODB.Stream")
sGet.Mode = 3
sGet.Type = 1
sGet.Open()
sGet.Write(xPost.responseBody)
sGet.SaveToFile strFile,2
End Function
說明:Download "網址", "檔名",其他不要亂改XD
CMD內容
down.vbs
pause
只是呼叫所以沒有甚麼好說明XD
共用down.vbs檔案直接調用的方式
這是用在很多檔案要下載的時候~
有需要請自己寫迴圈XD
down.vbs內容
Function Download(strUrl, strFile)
Set xPost = CreateObject("MSXML2.ServerXMLHTTP")
xPost.Open "GET", strUrl,0
xPost.Send()
Set sGet = CreateObject("ADODB.Stream")
sGet.Mode = 3
sGet.Type = 1
sGet.Open()
sGet.Write(xPost.responseBody)
sGet.SaveToFile strFile,2
End Function
請原封不動不要亂改,他是被用來合併用的~
CMD內容
echo Download "http://candy-sky.net/", "index.txt">rundown.vbs
type down.vbs>>rundown.vbs
rundown.vbs
del /f /q "rundown.vbs"
pause
說明:echo Download "網址", "檔名">rundown.vbs
單獨CMD檔案直接調用的方式
這是用在想要維持單一CMD檔案的時候~
CMD內容
echo Download "http://candy-sky.net/", "index.txt" >rundown.vbs
echo Function Download(strUrl, strFile) >>rundown.vbs
echo Set xPost = CreateObject("MSXML2.ServerXMLHTTP") >>rundown.vbs
echo xPost.Open "GET", strUrl,0 >>rundown.vbs
echo xPost.Send() >>rundown.vbs
echo Set sGet = CreateObject("ADODB.Stream") >>rundown.vbs
echo sGet.Mode = 3 >>rundown.vbs
echo sGet.Type = 1 >>rundown.vbs
echo sGet.Open() >>rundown.vbs
echo sGet.Write(xPost.responseBody) >>rundown.vbs
echo sGet.SaveToFile strFile,2 >>rundown.vbs
echo End Function >>rundown.vbs
rundown.vbs
del /f /q "rundown.vbs"
pause
說明:echo Download "網址", "檔名">rundown.vbs
總結
我想各位很久沒看到糖果的技術性文章了吧XD...
所以我就來寫一下了,
因為我看到網路上對於CMD如何下載檔案的方式說明極少~
我就把糖果用的幾種方式分享給大家,
方便大家CMD寫出自動更新模式XD
希望對大家有幫助,在此拋磚引玉~
希望有人某天可以研究出來更好的寫法!!
curl -o index.txt http://candy-sky.net/
lynx -dump http://candy-sky.net/ > index.txt
lynx -source http://candy-sky.net/ > index.txt
Windows沒這指令啦XD