121

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

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

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

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

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

15 ответов15

74

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

Синтаксис:

bitsadmin  /transfer job_name       /download  /priority priority   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.

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 
39

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

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

25

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

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

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

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

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

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

12

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, и он работает отлично.

7

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

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: Это будет грубо, если вы не хотите загружать какие-либо другие инструменты. Существует командная строка Wget для Windows, и Wget разработан именно для того, что вы просите.

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"
    
1

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

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

1

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

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

1

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

1

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

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

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

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

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

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

0

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .