Можно ли скачать с помощью командной строки Windows?

Можно ли скачивать с помощью командной строки Windows без использования каких-либо нестандартных (включая Windows) утилит?

Предпочтительной версией является Windows XP, но также интересно узнать о новых версиях.

Чтобы уточнить мой вопрос:

  • Это должно быть использование HTTP
  • Файл должен быть сохранен
  • Стандартная чистая установка Windows, никаких дополнительных инструментов

В общем, так как все кричат ​​о Wget, я хочу простую функциональность Wget без использования Wget.

15 ответов

Решение

Вы можете написать 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 

Начиная с Windows 7, я считаю, что есть один единственный метод, который еще не был упомянут, это простой:

Синтаксис:

 bitadmin / передать имя- задания / загрузить / приоритетный URL-адрес локальный \ путь \ файл 

Пример:

 bitadmin / передача mydownloadjob  / загрузка / приоритет нормальный ^
                  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.

Windows 7 включает PowerShell, и с PowerShell практически ничего нельзя сделать.

Родная альтернатива wget в Windows PowerShell?

PowerShell (входит в состав Windows 8 и входит в состав.NET для более ранних выпусков) имеет такую ​​возможность. powershell Команда позволяет запускать произвольные команды PowerShell из командной строки или .bat файл. Таким образом, следующая строка - это то, что нужно:

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

Я нашел способ сделать это, но на самом деле просто установите Wget.

Вы можете использовать Internet Explorer из командной строки (iexplore.exe), а затем ввести URL-адрес в качестве аргумента. Итак, запустите:

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

Какой бы файл ни был, вам нужно указать, что он не требует подтверждения заранее. И вот, он автоматически выполнит загрузку. Так что да, это технически возможно, но добрый господин делает это по-другому.

Windows Explorer (не путать с Internet Explorer) может загружать файлы через HTTP. Просто введите URL в адресную строку. Или из командной строки, например, C:\windows\explorer.exe http://somewhere.com/filename.ext,

Вы получаете классическую подсказку для загрузки файла. Если файл не является типом, который Windows Explorer знает, как отображать встроенный файл (.html, .jpg, .gif), в этом случае вам потребуется щелкнуть правой кнопкой мыши, чтобы сохранить его.

Я только что проверил это на своем образе VMware девственной установки Windows XP 2002 SP1, и он работает отлично.

Вы можете использовать (в стандартной Windows Bat):

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

Кажется, требуется PowerShell v4...

(Благодаря этому комментарию и этому)

Используйте FTP.

Из командной строки:

ftp ftp.somesite.com
user
password

и т.д. FTP включен в каждую версию Windows, которую я помню; вероятно не в 3.1, возможно не в Windows 95, но, конечно, все после этого.

@RM: Это будет грубо, если вы не хотите загружать какие-либо другие инструменты. Существует командная строка Wget для Windows, и Wget разработан именно для того, что вы просите.

Используйте 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"
    

В Win CMD (если у вас есть доступ на запись):

set url=https://www.nsa.org/content/hl-images/2017/02/09/NSA.jpg
set file=file.jpg
certutil -urlcache -split -f %url% %file%
echo Done.

Встроено в приложение для Windows. Нет необходимости во внешних загрузках.

Проверено на Win 10

Начиная с Windows 10 build 17063 и более поздних версий, теперь включен Curl, так что вы можете запускать его непосредственно из Cmd.exe или PowerShell.exe.

Например:

C:\>curl.exe -V
curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL
Release-Date: 2017-11-14, security patched: 2019-11-05
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL

Чтобы скачать файл:

curl.exe -O https://cdn.sstatic.net/Sites/superuser/Img/logo.svg

Файл можно скачать с помощью метода ниже

bitadmin / перевод wcb / приоритет высокого уровня https://sustainabledevelopment.un.org/content/documents/Agenda21.pdf C: \ Program Files (x86) \ Dell Update \ Agenda21.pdf

Если у вас установлен Python, вот пример, который получает get-pip.py из Интернета

python -c "import urllib; urllib.urlretrieve ('https://bootstrap.pypa.io/get-pip.py', r'C:\python27\Tools\get-pip.py')"

Вы можете установить приложение Linux Wget на Windows. Его можно скачать с http://gnuwin32.sourceforge.net/packages/wget.htm. Затем вы можете выполнить команду 'wget (inserturlhere)' или любой другой URL-адрес в командной строке, и он позволит вам загрузить этот URL/ файл / изображение.

Есть несколько способов загрузки с помощью командной строки в Windows:

  1. Вы можете использовать Cygwin.

    Примечание: включенные приложения не являются родными приложениями Linux. Вы должны пересобрать свое приложение из исходного кода, если хотите работать в Windows.

  2. Используя telnet, можно сделать запрос, но вы не увидите никакой обработки.

  3. Вы можете написать сценарии bat или VBS.

  4. Напишите свою собственную программу, которую вы можете запустить из cmd.exe.

Если вы устанавливаете Telnet, я думаю, вы могли бы сделать HTTP-запрос к серверу для загрузки файла.

Вы также можете установить Cygwin и использовать wget для загрузки файла. Это очень простой способ загрузки файлов из командной строки.

В Windows по умолчанию вы не можете скачать через HTTP. Windows является GUI-ориентированной ОС, поэтому ей не хватает многих инструментов командной строки, которые вы могли бы найти в других ОС, таких как wget, который был бы главным кандидатом.

System.Net.WebClient.DownloadFile()функция в WiniNet API, может загружать файлы, но я не уверен, насколько далеко вы продвинулись в разработке по сравнению с командным файлом.

Другие вопросы по тегам