8
6

More than 3 years have passed since last update.

Windows10にcurlあるじゃん!という話

Last updated at Posted at 2019-11-13

昨日

昨日、curl、wgetそしてInvoke-WebRequestについてというタイトルで記事を書きました。
https://qiita.com/tatsuki1112/items/dec473f93ca1bda239fb

そこで、windows内でcurlはInvoke-WebRequestのaliasの一つであり、本来のcurlとはだいぶ異なるものであると書きました。
しかし、よく調べるとWindows10にはcurlそのものが実装されているというのです!!!!

やってみた

PowerShellにおいては、curlはInvoke-WebRequestのaliasの一つであり、単にcurlコマンドをPowerShell上でたたいても、Invoke-WebRequestが実行されるのみです。ではPowerShellでcurlを実行するにはどうしたらよいのでしょうか、方法は以下の通りです。
今日取得するのは最高裁判所から、マクリーン事件の判例pdfです。

>cmd
Microsoft Windows [Version 10.0.18362.418]
(c) 2019 Microsoft Corporation. All rights reserved.
>curl http://www.courts.go.jp/app/files/hanrei_jp/255/053255_hanrei.pdf

☝こちらはコマンドプロンプトをPowershell上で実行する方法

>cmd /c curl http://www.courts.go.jp/app/files/hanrei_jp/255/053255_hanrei.pdf -O

☝こちらはコマンドで実行し、PowerShellに戻るというオプションです、/kにすると、PowerShellに戻りません。

>curl.exe http://www.courts.go.jp/app/files/hanrei_jp/255/053255_hanrei.pdf -O

☝こちらはC:\Windows\System32にある、curl.exeを直接呼び出しています。

どれも無事にpdfファイルをダウンロードできました、オプションもcurlと同様のものが利用できるようです。

>curl.exe http://www.courts.go.jp/app/files/hanrei_jp/255/053255_hanrei.pdf -o $env:USERPROFILE\Downloads\maclean_hanrei.pdf

curl(本物)使えるじゃん!!!!

まとめ

windowsでcurlコマンドが使えることがわかりました。調べてみるとver1803から標準で使えるようになったようです。しかし、先にPowerShellのInvoke-WebRequestにaliasとしてcurlが割り当てられてしまったがために、なんとなく使いにくい現状になってしまっています。また、curlはオプションを指定しない場合htmlが返ってくるのですが、chcp 65001で文字エンコードをUTF-8にしたとしても文字化けしてまともに使えたものではありません。この辺もまだまだ発展途上な感じがありますね。

追記

この記事は基本的にはWindows10に標準搭載されているPowerShellを基準に記述しています。しかし、最新版かつクロスプラットフォーム化したPowerShell coreではInvoke-WebRequestのaliasとしてのcurlやwgetは廃止されているようです。

8
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6