web-dev-qa-db-ja.com

WindowsのスクリプトからHTTP経由でファイルをダウンロードする

URLを指定してHTTP経由でファイルをダウンロードする方法が必要です(wgetのしくみに似ています)。 この質問 への回答を見てきましたが、要件に2つの変更があります。

  • Windows 7以降で実行することを希望します(ただし、Windows XPで動作する場合はボーナスです)。
  • 私はこれをスクリプトだけでストックマシンで実行できるようにする必要があります。スクリプトは、キーボードで簡単に入力したり、コピー/貼り付けしたりできるテキストでなければなりません。
  • 短いほど良いです。

したがって、基本的に、ダウンロードを実行できる.cmd(バッチ)スクリプト、 VBScript 、または PowerShell スクリプトが必要です。 [〜#〜] com [〜#〜] を使用するか、Internet Explorerを呼び出すことができますが、入力なしで実行する必要があり、ディスプレイなしで(- Telnet セッション)。

19
Jason R. Coombs

PowerShell> = 3.0を使用している場合は、 Invoke-WebRequest を使用できます。

Invoke-WebRequest -OutFile su.htm -Uri superuser.com

またはゴルフ:

iwr -outf su.htm superuser.com
15
Steven Penny

私は [〜#〜] bits [〜#〜]primer )を使用します:

Background Intelligent Transfer Service (BITS) is a component of modern
Microsoft Windows operating systems that facilitates prioritized,
throttled, and asynchronous transfer of files between machines using
idle network bandwidth.

Windows 7以降、BITSのMicrosoft PowerShellコマンドレットの使用を推奨

% import-module bitstransfer
% Start-BitsTransfer http://path/to/file C:\Path\for\local\file

[〜#〜] com [〜#〜] を介してBITSを使用することもできます。例 VBScript については here を参照してください。また、ダウンロードを制御するコマンドラインツールである「 bitsadmin 」があります。

BITSAdmin is a command-line tool that you can use to create download or
upload jobs and monitor their progress.

Windows 7では、bitsadmin.exeは非推奨のツールであることを示しています。それにもかかわらず:

% bitsadmin.exe /transfer "NAME" http://path/to/file C:\Path\for\local\file
14
akira

Webクライアント クラスを試してください。 this ページの下部にサンプルのPowerShellスクリプトがあります。

$c = new-object system.net.WebClient
$r = new-object system.io.StreamReader $c.OpenRead("http://superuser.com")
echo $r.ReadToEnd()
7
Charles Gargent

次の6行(または最後の4行のみ)をコピーしてテキストファイルに貼り付けます。次に、名前をvget.vbsに変更します。

'cscript vget.vbs >FILE.TXT
'Run this vbscript at command line. Use above syntax to download/create FILE.TXT
Set oX = CreateObject("Microsoft.XmlHTTP")
oX.Open "GET", "http://www.exampleURL.com/FILE.TXT", False
oX.Send ""
WScript.Echo oX.responseText

明らかに、このスクリプトを機能させるには、このスクリプトの3つの要素をカスタマイズする必要があります。

  1. http://www.exampleURL.com/FILE.TXT 」と言う部分。ダウンロードするファイルを正しいURLに置き換える必要があります。
  2. このスクリプトを実行するためにコマンドラインで実行するコマンド。スクリプトの正しい名前vget.vbsを指定する必要があります。
  3. そして、_ [〜#〜] dos [〜#〜] バッチコマンドラインによって出力が向けられる名前FILE.TXTです。

私はこれを使用して生のASCIIテキストファイル(より強力なcmdスクリプト)を Dropbox アカウントからダウンロードするために試しただけなので、それが可能かどうかはわかりませんEXEファイルなどの作業、または他のWebサーバーからの作業。

最初の2行のコメント行を省略した場合は、4行しかありません。 VBScript の使い方がわかっている場合は、このコードを頭に入れて、必要に応じてコマンドラインに入力することもできます。これには、CreateObject.Open.SendWScript.Echoおよび.responseTextの5つの主要なコマンドコンポーネントのみが含まれます。

3
ozidroid

誰もそれを指摘していないので、私は私の答えを追加したいと思います。 pythonのバージョンがインストールされている場合は、いくつかの外部ライブラリを使用してファイルをダウンロードできます。

python -m pip install wget # install the library
python -m wget http://someserver.org/somefile.rar

さらに、このコマンドをwget.batこのようなファイル:

python -m wget %1

次に、コマンドラインからwget.batを実行するだけでよいのですが、直接実行すると、Niceプログレスバーが表示されるため、直接実行することをお勧めします。

2
Advik

Windowsで外部ツールを使用せずにファイルをダウンロードする方法を再開する私の試みです

これには、BITSADMIN、Microsoft.XmlHTTP、およびWinHTTPとハイブリッドバッチ/ JScript スクリプトが含まれており、一時ファイルを必要としません。

1
npocmaka