테크 지식
[커뮤니티] CMD를 통해 안정적으로 파일 다운로드(VBS사용)
bitsadmin는 권한때문에 다운로드가 안되고<p>Powershell은 어떨때는 되다가 어떨때는 강제중지가 되고</p>
그래도 최소한 wget for windows는 배치파일 내에서 다운로드를 하기 위해서 몇일동안 찾아본 결과 에러가 잘 나지 않게 스크립트를 찾아서 짜 보았다.
원문은 이쪽이다. http://blog.netnerds.net/2007/01/vbscript-download-and-save-a-binary-file/
필자의 경우 배치파일에서 이렇게 사용하였다.
#
ECHO - "7-Zip Precompiled Binaries"를 다운로드하는 중...
>"%temp%\download_7za.vbs" echo ' Set your settings
>>"%temp%\download_7za.vbs" echo strFileURL = "https://github.com/develar/7zip-bin/raw/master/win/%ARCHITECTURE_7za%/7za.exe"
>>"%temp%\download_7za.vbs" echo strHDLocation = "%cd%\tools\7za.exe"
>>"%temp%\download_7za.vbs" echo.
>>"%temp%\download_7za.vbs" echo ' Fetch the file
>>"%temp%\download_7za.vbs" echo Set objXMLHTTP = CreateObject^("MSXML2.XMLHTTP"^)
>>"%temp%\download_7za.vbs" echo.
>>"%temp%\download_7za.vbs" echo objXMLHTTP.open "GET", strFileURL, false
>>"%temp%\download_7za.vbs" echo objXMLHTTP.send^(^)
>>"%temp%\download_7za.vbs" echo.
>>"%temp%\download_7za.vbs" echo If objXMLHTTP.Status = 200 Then
>>"%temp%\download_7za.vbs" echo Set objADOStream = CreateObject^("ADODB.Stream"^)
>>"%temp%\download_7za.vbs" echo objADOStream.Open
>>"%temp%\download_7za.vbs" echo objADOStream.Type = 1 'adTypeBinary
>>"%temp%\download_7za.vbs" echo.
>>"%temp%\download_7za.vbs" echo objADOStream.Write objXMLHTTP.ResponseBody
>>"%temp%\download_7za.vbs" echo objADOStream.Position = 0 'Set the stream position to the start
>>"%temp%\download_7za.vbs" echo.
>>"%temp%\download_7za.vbs" echo Set objFSO = Createobject^("Scripting.FileSystemObject"^)
>>"%temp%\download_7za.vbs" echo If objFSO.Fileexists^(strHDLocation^) Then objFSO.DeleteFile strHDLocation
>>"%temp%\download_7za.vbs" echo Set objFSO = Nothing
>>"%temp%\download_7za.vbs" echo.
>>"%temp%\download_7za.vbs" echo objADOStream.SaveToFile strHDLocation
>>"%temp%\download_7za.vbs" echo objADOStream.Close
>>"%temp%\download_7za.vbs" echo Set objADOStream = Nothing
>>"%temp%\download_7za.vbs" echo End if
>>"%temp%\download_7za.vbs" echo.
>>"%temp%\download_7za.vbs" echo Set objXMLHTTP = Nothing
cscript /nologo "%temp%\download_7za.vbs"
del "%temp%\download_7za.vbs"
#
대략적인 구조를 설명하자면
VBS파일을 임시파일에 저장시킨후, 파일이 다운로드 되면 VBS파일을 삭제하는 방식이다.
여기서 세번째줄인
strFileURL = "https://github.com/develar/7zip-bin/raw/master/win/%ARCHITECTURE_7za%/7za.exe"
에서 https://git...에 다운로드할 주소를,
네번째 줄인
strHDLocation = "%cd%\tools\7za.exe"
에서 %....를 저장할 위치를 넣으면 된다.
"를 끝부분에 다는것을 까먹지 말자.
필자는 두 파일을 다운로드를 하기 위해서 이 스크립트를 두번 만들고 두번 삭제하는데
vbs에 옵션을 넣는(download.vbs "파일주소" "저장주소") VBS를 만드는 방식이였으면 더 편하지 않았을까 싶다.
그렇게 만들고는 싶다만 어떻게 만들어야 할지는 모르겠다.