あるSEのつぶやき・改

ITやシステム開発などの技術に関する話題を、SEとしての経験から取り上げたり解説したりしています。

コマンドでダウンロードファイルのブロックを簡単に解除する方法

はじめに

Windows でインターネットからファイルをダウンロードしてくると、以下のようにファイルにブロックがかかってしまい、ファイルのプロパティを表示して手作業でブロックを解除しなければならず、かなり面倒です。

ファイルのブロック

インターネットでソフトウェアなどを公開していると、ファイルのブロックが邪魔をすることもあり困っていたのですが、コマンドでダウンロードファイルのブロックを簡単に解除する方法を見つけましたのでご紹介です。

コマンドでのファイルのブロック解除方法

Windows でコマンドを利用してファイルのブロックを解除するには、PowerShell を起動してUnblock-Fileコマンドを実行します。

PowerShell のカレントにファイルがあるのであれば、以下のように実行します。

PS C:\ > Unblock-File <ファイル名>

ファイルがカレントにない場合は、以下のようにファイルのパスを指定して実行します。

PS C:\ > Unblock-File -Path <ファイルのパス>

「なんだ、PowerShellか」と思った方、まだ早いです。

コマンドプロンプトからファイルのブロック解除をする方法もご紹介します。

コマンドプロンプトからファイルのブロック解除を行う方法

PowerShell のコマンドはコマンドプロンプトからも呼び出すことができます。

ですので、コマンドプロンプトで以下のように実行すればファイルのブロックを解除できます。

C:\> powershell -ExecutionPolicy RemoteSigned -Command Unblock-File <ファイル名>

これで、バッチファイルからもファイルのブロックを解除することができますね。

VBScript でファイルのブロック解除を行う方法

バッチファイルを VBScript で作成される方も多いと思います。

VBScript では以下のように実行します。

Dim wsh

Set wsh = CreateObject("wscript.shell")

wsh.Run "powershell -ExecutionPolicy RemoteSigned -Command Unblock-File SampleFile.xlam"

Set wsh = Nothing

ダウンロードフォルダにある全てのファイルのブロックを解除する方法

最後に、ダウンロードフォルダにある全てのファイルのブロックを解除するコマンドをご紹介します。

PowerShell の画面で以下のようにコマンドを実行するだけです。

PS C:\>  dir (New-Object -ComObject Shell.Application).NameSpace('shell:Downloads').Self.Path -Recurse| Unblock-File

これを先程のようにバッチで以下のように作成すると、ダウンロードが終わったらバッチを実行するだけで全てのファイルのブロックを解除することができるようになります。

powershell -ExecutionPolicy RemoteSigned -Command "dir (New-Object -ComObject Shell.Application).NameSpace('shell:Downloads').Self.Path -Recurse| Unblock-File"

おわりに

たまたま発見した方法ではありますが、かなり便利なTipsだと思います。

ぜひ色々とご活用ください。

参考までに公式ドキュメントも載せておきます。

docs.microsoft.com