Windowsコマンドラインを使用してダウンロードすることはできますか?


123

非標準の(Windowsを含む)ユーティリティを使用せずに、Windowsコマンドラインを使用してダウンロードできますか?

推奨バージョンはWindows XPですが、新しいバージョンについて知ることも興味深いです。

私の質問をさらに明確にするには:

  • HTTPを使用する必要があります
  • ファイルを保存する必要があります
  • 標準のクリーンWindowsインストール、追加のツールなし

だから基本的に、誰もがWgetを叫んでいるので、Wgetを使用せずに、単純なWget機能が必要です。


6
「Windowsで唯一のブラウザが機能しない場合、インターネットに接続する方法は?」でsuperuser.com/questions/50427/...
Arjan

そして、それは何ダースのWindows XPバージョンのどれでしょうか?
アルジャン

Windows XP SP2のどのバージョンでも、後でリリースされるすべてのものであるとしましょう。
ロバートマッサ

@arjan興味深い質問ですが、まだ決定的な答えはありません。
ロバートマッサ

「編集」を要求する必要がありました。Starter、Home、Professional、Media Center、Tablet、Embedded(おそらくそこにあるツールの良い変更!)...またはWindows Media Playerのないヨーロッパ版のように。:
アルジャン

回答:


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で唯一のブラウザが死んでいる場合、インターネットに接続する方法は?」に対する良い答えになると思います。でsuperuser.com/questions/50427/... :-)
Arjan

それはcscript.exeへのアクセス許可が許可されている場合です
-hello_there_andy

このスクリプトをWindows PE 5.1でテストし、魅力的に機能したことを確認できます。USBドライブのプラットフォームのバージョンをサーバーに保存されているテキストファイルと照合するために、オフライン展開に使用する予定です。
ウェイファーラー

74

Windows 7以降では、まだ言及されていない簡単な方法が1つあると思います。

構文:

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

^読みやすくするために(スクロールを避けるために)2つの独立した行に分割されています。)

警告:コメントで指摘したように、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の一部です。
アキラ

3
私の窓7で動作しませんでした
...-jyz

3
これは、トップ投票の答えであるべきでした。ただし、bitsadminは廃止され、Windows PowerShellが採用されました。
レンカイト

3
Win7の上で作業を確認してください
カイザー

7
注:BITSAdminは非推奨であり、Windowsの将来のバージョンで使用できることが保証されていません。BITSサービスの管理ツールは、BITS PowerShellコマンドレットによって提供されるようになりました。
ウジワルシン

39

Windows 7にはPowerShellが含まれており、PowerShellでできることはほとんどありません。

Windows PowerShellのwgetに代わるネイティブ?


16
(新しいオブジェクトNet.WebClient).DownloadFile( 'someurl'、 'somepath')
ジェイソンスタングローム

3
PowerShellはですパワーレンジャー!それはどれほどクールで、なぜ私はこれを知らなかったのですか?バイバイcmd
カイザー

17
CMD.EXEから:powershell -command "& { iwr http://www.it1.net/it1_logo2.jpg -OutFile logo.jpg }"。また、実行プロンプトから動作します
ヤヌスTroelsen

1
ええ、Powershellなしではできないことはありません。それは本当のチューリングターピットです:)
jcarpenter2 14年

PowerShellの私のバージョンは、「用語『IWRは』 ...、コマンドレットの名前として認識されていない」が、いくつかの調査の後、この似て働いていた答え@JanusTroelsen:powershell -command "$clnt = new-object System.Net.WebClient; $clnt.DownloadFile(\"https://host/name\", \"outpufilename\")"
rogerdpack

25

PowerShell(Windows 8に含まれ、以前のリリースの.NETに含まれていた)にはこの機能があります。このpowershellコマンドを使用すると、コマンドラインまたは.batファイルから任意のPowerShellコマンドを実行できます。したがって、次の行が必要です。

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

2
これは質問に対する答えを提供しません。投稿者に批評または説明を依頼するには、投稿の下にコメントを残します-自分の投稿にいつでもコメントできます。十分な評判たら、投稿コメントできるようになります。
ハリーマック

3
@harrymcはそれが答えだと確信しています。ファイルをダウンロードします。さらに何が欲しいですか?
ヤヌストロエルセン14年

1
(1)このワンライナーの機能を説明するテキスト、(2)回答が以前の回答の代替案ではないことを確認します。もしあれば、その回答に対するコメントとしてしか表現できないためです。
harrymc 14年

これが機能するには、どのバージョンのWindowsおよびPowerShellが必要ですか?
ピーターモーテンセン14

2
これはWindows Server 2012 FYIでは機能せず、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

Windows Explorer(Internet Explorerと混同しないでください)はHTTP経由でファイルをダウンロードできます。URLをアドレスバーに入力するだけです。または、コマンドラインから、たとえばC:\windows\explorer.exe http://somewhere.com/filename.ext

従来のファイルダウンロードプロンプトが表示されます。ファイルが、Windowsエクスプローラーがインライン表示方法(.html、.jpg、.gif)を認識しているタイプでない場合は、右クリックして保存する必要があります。

Windows XP 2002 SP1の新規インストールのVMwareイメージでこれをテストしたところ、正常に動作します。


4
これにはユーザーの操作が必要です。おそらく、コマンドプロンプトからファイルをダウンロードしたいほとんどの人が望んでいないものを
キップ

最近では、デフォルトブラウザに依存しています。私のものはクロムであり、既知の場所に自動的にダウンロードされるので、このソリューションは私のニーズに十分であると思います。どうも!
-kayleeFrye_onDeck


6

FTPを使用します。

コマンドラインから:

ftp ftp.somesite.com
user
password

など。FTPは、覚えているすべてのWindowsバージョンに含まれています。おそらく3.1ではなく、Windows 95でもないかもしれませんが、その後は確かにすべてです。

@RM:他のツールをダウンロードしたくない場合は大雑把になります。コマンドラインが存在するWindows用のWgetはWgetは、あなたが求めている正確に何をするように設計されては。


+1良い答え。ftpは、ダウンロードしようとしているサーバーがサポートしている限り、かなり普遍的です。
DaveParillo

申し訳ありませんが、申し訳ありませんが、私はより具体的ではなく、HTTPを使用するつもりでした。
ロバートマッサ

1
このWindows ftpクライアントではパッシブモードがサポートされていないため、ほとんどのFTPサーバーでは機能しません(パッシブモードの間にNATが必要です)。
ピーターモーテンセン

@PeterMortensenまた、wget機能を探していることを指定するように編集したため、リモートで質問に回答しません。しかし、それだけで7才の間違った答えを復活させることを止めてはいけません。
悪魔のような子犬

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でも機能します。
ピーターモーテンセン

1

Telnetをインストールすると、ファイルをダウンロードするためにサーバーにHTTPリクエストを行うことができると思います。

Cygwinをインストールし、wgetを使用してファイルをダウンロードすることもできます。これは、コマンドラインからファイルをダウンロードする非常に簡単な方法です。


2
「cygwin」は非標準のユーティリティとしてカウントされると確信しています;-)
DaveParillo

Telnetは興味深いオプションですが、出力を破損することなくファイルにパイプする方法はありますか?また、HTTP GETコマンドをTelnetにパイプして要求を行うことはできますか?
ロバートマッサ

telnetをインストールしますか?Telnetはftpに似ています。それは窓が付属しています。ただし、出力のリダイレクトについては知りません。
悪魔のような子犬

XPでは(質問のように)telnetはデフォルトでインストールされますが、Vistaではもはやそうではないと聞いたことがありますか?ただし、1つのHTTP応答ですべてが返されない限り、ファイルのダウンロードは許可されません。また、ヘッダーを削除して、コマンドラインで内容をデコードすることもできます。それを制御できる可能性は非常に低い。
アルジャン

1
wgetを使用するためだけにcygwinをインストールするのはなぜですか?利用可能なネイティブwin32バイナリがあります。
innaM 2009年

1

Windowsのコマンドラインを使用してダウンロードできる方法はいくつかあります。

  1. Cygwinを使用できます

    注:含まれているアプリはネイティブLinuxアプリではありません。Windowsで実行する場合は、ソースからアプリケーションを再構築する必要があります。

  2. telnetを使用すると、要求を行うことができますが、処理は表示されません。

  3. batまたはVBSスクリプトを作成できます。

  4. cmd.exeから実行できる独自のプログラムを作成します。


1

LinuxアプリケーションWgetをWindowsにインストールできます。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ユーティリティを使用せずに述べています。
ロバートマッサ

0

Pythonがインストールされている場合、ここにWebから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.