Windows 명령 행을 사용하여 다운로드 할 수 있습니까?


123

비표준 (Windows 포함) 유틸리티를 사용하지 않고 Windows 명령 행을 사용하여 다운로드 할 수 있습니까?

선호하는 버전은 Windows XP이지만 최신 버전에 대해서도 알고 있습니다.

내 질문을 더 명확히하려면 :

  • HTTP를 사용해야합니다
  • 파일을 저장해야합니다
  • 표준 깨끗한 Windows 설치, 추가 도구 없음

기본적으로 모든 사람들이 Wget을 비명을 지르기 때문에 Wget을 사용하지 않고 간단한 Wget 기능을 원합니다.


6
"Windows의 유일한 브라우저가 죽은 경우 인터넷에 연결하는 방법"에 대한 추가 아이디어 에서 superuser.com/questions/50427/...
Arjan

그리고 십여 개의 Windows XP 버전 중 어떤 버전입니까?
Arjan

모든 Windows XP SP2 버전과 이후에 출시 된 모든 제품이 될 수 있다고 가정합니다.
Robert Massa

@arjan 재미있는 질문이지만 여전히 확실한 답은 없습니다.
Robert Massa

나는 "에디션"을 요구 했어야했다. 스타터, 홈, 프로페셔널, 미디어 센터, 태블릿과 같이 임베디드 (아마도 툴에 대한 좋은 변화라고 생각합니다!) ... 또는 Windows Media Player가없는 유럽 버전. :-)
Arjan

답변:


51

VBScript를 작성하고 명령 행에서 실행할 수 있습니다.

파일을 작성 downloadfile.vbs하고 다음 코드 줄을 삽입하십시오.

' Set your settings
    strFileURL = "http://www.it1.net/images/it1_logo2.jpg"
    strHDLocation = "c:\logo.jpg"

' Fetch the file
    Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")

    objXMLHTTP.open "GET", strFileURL, false
    objXMLHTTP.send()

If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1 'adTypeBinary

objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0    'Set the stream position to the start

Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
Set objFSO = Nothing

objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End if

Set objXMLHTTP = Nothing

다음과 같이 명령 행에서 실행하십시오.

cscript.exe downloadfile.vbs 

1
이것이 Internet Explorer에 의존하는지 궁금하지만 "Windows의 유일한 브라우저가 죽은 경우 인터넷에 연결하는 방법"에 대한 정답 일 것입니다. at superuser.com/questions/50427/… :-)
Arjan

cscript.exe에 대한 권한이 허용되는 경우
hello_there_andy

Windows PE 5.1 에서이 스크립트를 테스트 했으며 매력처럼 작동 했음을 확인할 수 있습니다 . 서버에 저장된 텍스트 파일과 USB 드라이브의 플랫폼 버전을 확인하기 위해 오프라인 배포에 사용하려고합니다.
Wayfarer

74

Windows 7부터는 아직 언급되지 않은 단일 방법이 있다고 생각합니다.

통사론:

bitsadmin / transfer job_name        / download / 우선 순위    우선 순위 URL   local \ path \ file

예:

bitsadmin / transfer mydownloadjob / download / priority normal ^
                  http://example.com/filename.zip C : \ Users \ username \ Downloads \ filename.zip

( ^가독성을 위해 (스크롤을 피하기 위해) 별도의 두 줄로 나뉩니다.)

경고 : 주석에서 지적했듯이 bitsadmin도움말 메시지는 다음과 같이 시작됩니다.

BITSAdmin is deprecated and is not guaranteed to be available in future versions of Windows.
Administrative tools for the BITS service are now provided by BITS PowerShell cmdlets.

...하지만 다른 의견은 Windows 8에서 작동한다고보고했습니다.


16
windows7의 일부입니다.
akira

3
내 창 7에서 작동하지 않았다 ...
jyz

3
이것이 가장 투표 된 답변이어야합니다. bitsadmin은 Windows powershell을 위해 더 이상 사용되지 않습니다.
lenkite

3
Win7
kaiser

7
참고 : BITSAdmin은 더 이상 사용되지 않으며 향후 Windows 버전에서 사용 가능하지 않을 수 있습니다. BITS 서비스 용 관리 도구는 이제 BITS PowerShell cmdlet에서 제공합니다.
Ujjwal Singh

39

Windows 7에는 PowerShell이 ​​포함되어 있으며 PowerShell로 수행 할 수있는 작업은 거의 없습니다.

Windows PowerShell에서 wget을 대체하는 기본 대안은 무엇입니까?


16
(New-Object Net.WebClient) .DownloadFile ( 'someurl', 'somepath')
Jason Stangroome

3
Powershell파워 레인저를 위한 것입니다 ! 쿨은 어때요 도대체 내가 왜 몰랐어? 비비 cmd.
카이저

16
cmd.exe에서 : powershell -command "& { iwr http://www.it1.net/it1_logo2.jpg -OutFile logo.jpg }". 또한 실행 프롬프트에서 작동
Janus Troelsen

1
예, powershell 없이는 할 수있는 것이 없습니다. 진짜
타르타르 타르트

@JanusTroelsen 내 PowerShell 버전은 " 'iwr'이라는 용어는 cmdlet의 이름으로 인식되지 않습니다 ..."라고 응답했지만 비슷한 조사가 수행되었습니다.powershell -command "$clnt = new-object System.Net.WebClient; $clnt.DownloadFile(\"https://host/name\", \"outpufilename\")"
rogerdpack

25

Windows 8에 포함되어 있고 이전 릴리스의 .NET에 포함 된 PowerShell에는이 기능이 있습니다. 이 powershell명령을 사용하면 명령 줄 또는 .bat파일 에서 임의의 PowerShell 명령을 실행할 수 있습니다. 따라서 다음 줄은 원하는 것입니다.

powershell -command "& { (New-Object Net.WebClient).DownloadFile('http://example.com/', 'c:\somefile') }"

2
이것은 질문에 대한 답변을 제공하지 않습니다. 작성자의 의견을 비판하거나 설명을 요청하려면 게시물 아래에 댓글을 남겨주세요. 언제든지 자신의 게시물 에 댓글 수 있으며 평판 이 충분 하면 게시물댓글 수 있습니다 .
harrymc

3
@ harrymc 그것은 대답입니다. 파일을 다운로드합니다. 무엇을 더 원하십니까?
야누스 트롤 슨

1
(1)이 one-liner의 기능을 설명하는 일부 텍스트, (2) 귀하의 답변이 이전 답변의 대안이 아닌지 검증하십시오.
harrymc 2016 년

이것이 작동하려면 어떤 버전의 Windows 및 PowerShell이 ​​필요합니까?
피터 Mortensen

2
이 참고로 2012 윈도우 서버에서 작동하지 않습니다, 그것은 MethodInvocationException 발생
knocte

17

나는 그것을하는 방법을 찾았지만 실제로는 Wget을 설치하십시오 .

명령 줄 (iexplore.exe)에서 Internet Explorer를 사용한 다음 URL을 인수로 입력 할 수 있습니다. 따라서 다음을 실행하십시오.

iexplore.exe http://blah.com/filename.zip

파일이 무엇이든 미리 확인하지 않아도되도록 지정해야합니다. 보라, 그것은 자동으로 다운로드를 수행합니다. 그렇습니다. 기술적으로 가능하지만 좋은 주인은 다른 방식으로 그것을합니다.


나는 wget이 훨씬 더 좋은 방법이라는 것을 알고있다. 그것은 단지 가상의 질문 일 뿐이다.) 당신의 대답은 꽤 가깝지만, 여전히 사용자 개입 ( "저장"을 클릭
하거나이

3
내가 말했듯이, 해당 파일 형식을 저장하라는 메시지를 표시하려면 옵션을 선택 취소해야합니다. 예를 들어 zip 파일을 다운로드하고 해당 프롬프트를 비활성화하면 나중에 명령 줄에서 액세스 한 zip 파일이 자동으로 저장됩니다.
DHayes

1
+1, 비록 그것이 검증되지는 않았지만 작동하지만 (최종 진술은 매우 사실입니다)
Arjan

1
1 "사랑하는 주님이이 방법을 사용하지 않는다"에 대한 ... :)
돌팔이 의사 키호테

12

Internet Explorer와 혼동하지 않는 Windows 탐색기 는 HTTP를 통해 파일을 다운로드 할 수 있습니다. 주소 표시 줄에 URL을 입력하십시오. 또는 명령 행에서 (예 :) C:\windows\explorer.exe http://somewhere.com/filename.ext.

기본 파일 다운로드 프롬프트가 표시됩니다. 파일이 Windows 탐색기에서 인라인 (.html, .jpg, .gif)을 표시하는 방법을 알고있는 유형이 아닌 경우 마우스 오른쪽 버튼을 클릭하여 저장해야합니다.

방금 Windows XP 2002 SP1의 기본 설치에 대한 VMware 이미지에서 이것을 테스트 했으며 정상적으로 작동합니다.


4
이를 위해서는 사용자 상호 작용이 필요합니다. 명령 프롬프트에서 파일을 다운로드하려는 대부분의 사람들이 원하지 않는 것
Kip

요즘은 기본 브라우저에 따라 다릅니다. 광산은 크롬이며 알려진 위치로 자동 다운로드 되므로이 솔루션이 내 요구에 충분하다고 생각합니다. 고마워!
kayleeFrye_onDeck 2011

7

표준 Windows 박쥐에서 다음을 사용할 수 있습니다.

powershell -command "& { iwr http://www.it1.net/it1_logo2.jpg -OutFile logo.jpg }"

PowerShell v4가 필요한 것 같습니다 ...

( 그 의견이것에 감사합니다 )


6

FTP를 사용하십시오.

명령 행에서 :

ftp ftp.somesite.com
user
password

FTP는 기억할 수있는 모든 Windows 버전에 포함되어 있습니다. 아마 3.1에서는 아니고, 아마도 Windows 95 에서는 아니지만 그 이후의 모든 것입니다.

@ RM : 다른 도구를 다운로드하지 않으려면 어려울 것입니다. Windows 용 Wget 명령 줄이 있으며 Wget 은 정확히 원하는 것을 수행하도록 설계되었습니다.


+1 좋은 답변. ftp는 다운로드하려는 서버가 지원하는 한 상당히 보편적입니다.
DaveParillo

고맙습니다. 죄송합니다. 더 구체적이지 않았기 때문에 HTTP를 사용했습니다.
Robert Massa

1
이 Windows ftp 클라이언트는 수동 모드를 지원하지 않기 때문에 대부분의 FTP 서버에서는 작동하지 않습니다 (수동 모드 사이의 NAT가 필요함).
Peter Mortensen

@PeterMortensen 또한 wget 기능을 찾고 있다고 지정하기 위해 편집 한 이후 원격으로 질문에 대답하지 않습니다. 하지만 7 살짜리 오답을 부활 시켜서 약간의 농약을 추가하는 것을 막지 마십시오.
Satanicpuppy

4

다음과 같이 PowerShell을 사용하십시오.

  1. download.ps1 파일을 작성하십시오.

    param($url, $filename)
    $client = new-object System.Net.WebClient 
    $client.DownloadFile( $url, $filename)
    
  2. 이제 다음과 같은 파일을 다운로드 할 수 있습니다.

    powershell Set-ExecutionPolicy Unrestricted
    powershell -ExecutionPolicy RemoteSigned -File "download.ps1" "http://somewhere.com/filename.ext" "d:\filename.ext"
    

Windows XP 64 비트, PowerShell 2.0에서도 작동합니다.
Peter Mortensen

1

Telnet을 설치하면 서버에 파일을 다운로드하기 위해 HTTP 요청을 할 수 있다고 생각합니다.

Cygwin 을 설치 하고 wget 을 사용 하여 파일을 다운로드 할 수도 있습니다. 이것은 명령 행에서 파일을 다운로드하는 매우 쉬운 방법입니다.


2
나는 표준이 아닌 유틸리티 ;-)로 카운트를 'Cygwin에서'확신
DaveParillo

Telnet은 흥미로운 옵션입니다. 출력을 손상시키지 않고 파일로 파이프하는 방법이 있습니까? 그리고 요청을하기 위해 HTTP GET 명령을 텔넷으로 파이프 할 수 있습니까?
Robert Massa

텔넷을 설치 하시겠습니까? 텔넷은 ftp와 같습니다. 창문이 함께 제공됩니다. 그래도 출력 리디렉션에 대해 모른다.
Satanicpuppy

XP의 경우 (질문과 같이) telnet이 기본적으로 설치되어 있지만 Vista에서는 더 이상 그렇지 않다고 들었습니다. 모두가 하나의 HTTP 응답으로 반환하지 않는 있지만, 그것은, 파일 다운로드를 허용하지 않는, 그리고 하나의 헤더를 제거하는 및 명령 줄에서 물건을 디코딩 할 수있다. 아마도 그것을 제어 할 수 없을 것입니다.
Arjan

1
왜 wget을 사용하기 위해 cygwin을 설치합니까? 사용 가능한 기본 win32 바이너리가 있습니다.
innaM

1

Windows에서 명령 행을 사용하여 다운로드 할 수있는 몇 가지 방법이 있습니다.

  1. Cygwin 을 사용할 수 있습니다 .

    참고 : 포함 된 앱은 기본 Linux 앱이 아닙니다. Windows에서 실행하려면 소스에서 애플리케이션을 다시 빌드해야합니다.

  2. 텔넷을 사용하면 요청을 할 수 있지만 처리가 표시되지 않습니다.

  3. 박쥐 또는 VBS 스크립트를 작성할 수 있습니다.

  4. cmd.exe에서 실행할 수있는 자체 프로그램을 작성하십시오.


1

Windows에 Linux 응용 프로그램 Wget을 설치할 수 있습니다. http://gnuwin32.sourceforge.net/packages/wget.htm 에서 다운로드 할 수 있습니다 . 그런 다음 명령 프롬프트에서 'wget (inserturlhere)'명령 또는 다른 URL 을 발행하면 해당 URL / 파일 / 이미지를 다운로드 할 수 있습니다.


1
이상하게도이 버전은 항상 호환되는 것은 아닙니다. 내 Windows 7 컴퓨터에서는 라이브러리가 없기 때문에 아닙니다. 대부분의 추가 라이브러리없이 wget을 사용하고 싶을 것입니다. users.ugent.be/~bpuype/wget
sinni800


0

기본 Windows에서는 HTTP를 통해 다운로드 할 수 없습니다. Windows는 GUI 중심의 OS이므로 다른 OS에서 찾을 수있는 많은 명령 줄 도구 (예 wget: 주요 후보)가 없습니다.

System.Net.WebClient.DownloadFile()WiniNetAPI 의 함수 인 파일을 다운로드 할 수 있지만 실제 파일과 배치 파일 사이의 거리는 확실하지 않습니다.


wget을 사용하는 것이 가능하다는 것을 이해하지만 비표준 Windows 유틸리티를 사용하지 않고 내 질문에 설명합니다.
Robert Massa

0

파이썬이 설치되어 있다면 웹에서 get-pip.py를 가져 오는 예제가 있습니다.

python -c "import urllib; urllib.urlretrieve ('https://bootstrap.pypa.io/get-pip.py', r'C:\python27\Tools\get-pip.py')"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.