Windows Update のクリーンアップで空き領域を増やす

Windows の自動更新などで Windows Update が実行されると、次第にストレージ (HDD・SSD) の空き領域が減っていきます。
その理由はもちろん、Windows 自体のサイズが増加する為でもあるのですが、実は Windows の動作に必須ではないファイルも残されたり、作られたりしています。

そのような削除しても良いファイルのうち、アップデート前の状態に復元する為のバックアップ(復元ポイント)は、一定期間後に自動的に削除されます。

しかし、過去にインストールされた更新プログラム情報は、不要ですが残ってしまいます。これは既に Windows で使われておらず、再利用されることも無いため、削除しても問題ありません。空き領域は数GB程度増える可能性があります。

また、アップグレードのログファイルも自動削除されません。こちらも Windows の動作には無関係で削除しても構いませんが、トラブル時に役立つ可能性があるため、残しておくことが推奨されています。

クリーンアップの実行方法

過去の更新プログラム情報の削除は、Windows の設定から簡単に行なえます。
まず、スタートメニューの ⚙ 歯車マークなどから「Windows の設定」を開き、メニューを下記の順にたどります。

システム > ストレージの項目ストレージセンサーにある「今すぐ空き領域を増やす

windows_update_cleanup1.jpg
Windows の設定 > システム > ストレージ

複数の削除対象項目とチェックボックスが表示されますので、その中から、「Windows Update のクリーンアップ」にチェックが入っていることを確認しましょう。なお、既にクリーンアップされている場合は、項目自体が表示されません。

削除対象項目のうちのいくつかは最初からチェックされていますが、上記の通りアップグレードログファイルは外しておいたほうが良いかもしれません。その他も、必要がなければチェックを外します。「縮小表示」と「一時ファイル」は削除しても大丈夫ですので、チェックを入れておきます。

windows_update_cleanup2.png
Windows Update のクリーンアップ中

確認がおわったら、上部にある「ファイルの削除」ボタンを押すと、不要ファイルの削除が開始されます。

完了までの時間

「Windows Update のクリーンアップ」にはかなり時間がかかります。数十分から1時間以上かかる可能性もありますので、PC の稼働時間に余裕があるときがオススメです。

削除中は進捗状況が表示されず、ちゃんと動いているのか不安になりますが、タスクマネージャで CPU の負荷など見ると動作していることが確認できます。
Everything などのインデックスを作るタイプのファイル検索ソフトが常駐している場合は、完全に終了させておいたほうが進捗が早くなるかもしれません(…関係ないかも)。

なお、「今すぐ空き領域を増やす」機能は Windows に以前から搭載されている「ディスク クリーンアップ」とほぼ同等のようです。「ディスク クリーンアップ」は今後廃止される予定ですが暫くの間は利用可能で、そちらでも削除できます。

※ 2018年10月現在の Windows 10 で確認。

関連サイト

Windows 10 には mklink が無い…わけではない

Windows ユーザの皆さん、シンボリックリンク使ってますか?
Linux では多用されるシンボリックリンクも Windows ではあまり使う機会が無いと思いますが、実はかなり以前 (Vista以降) から使えるようになっています。

シンボリックリンクは mklink コマンドで作成できます。

そこで、いっちょ使ってやろうかな!と PowerShell を起動して mklink と入力すると、コマンドが無くて実行できないという事態に陥ります (´・ω・`)

mklink_powershell.png
Windows PowerShell

PowerShell では、画像の通り cmdmklink を渡せば実行できます。

cmd /c mklink /d "c:\symlink名" "e:\foo\既存のディレクトリ"

シンボリックリンク作成時は、管理者権限が必要になる場合があります。
予め管理者権限付きで PowerShell を起動しましょう。

ジャンクションとハードリンク

mklink には他にも類似のリンクを作る機能があり、mklink /j でジャンクション、mklink /h でハードリンクが作れます。

これらとシンボリックリンクの違いは色々あるようですが、どう使い分けるべきなのか明確な基準がありません。この雑然とした感じが Windows らしい所でもありますね!
ただシンボリックリンクが最も新しい機能なので、基本的にはシンボリックリンクで良いようです。

なぜ直接実行できないの?

直接実行できない理由は、どうやら mklink が cmd の内部コマンドだからのようです。PowerShell ではなく普通のコマンドプロンプトからなら、cmd を通さなくても実行可能です。

しかし cmd の内部コマンドが全て PowerShell で直接実行できないわけではなく、start などは実行できます。うーん、謎仕様ですね(´・ω・`)

関連サイト

バッチファイルを UTF-8 で書く

現在の Windows では、コードページ指定をすればコマンドラインで UTF-8 を書くことができます。
そこで、バッチファイルを UTF-8 で書く際に気をつけるべき点をご紹介します。

UTF-8に変更したコマンドプロンプト
UTF-8に変更したコマンドプロンプト

コードページを変更する

コードページは、特定の文字コードを表す Windows 特有の番号で、SJISは 932、UTF-8 は 65001 です。
コードページを変更する為、バッチファイルの先頭で chcpコマンドを指定します。

@echo off
chcp 65001

改行コード

バッチファイルを UTF-8 で保存するとき、改行コードを LF (Unix形式)にしてしまいたくなりますが、これだと上手く動作しない場合があります。
改行コードは必ず、CR+LF (Windows形式)で保存しましょう。

対応フォントを指定

文字化けを防ぐ為に、コマンドプロンプトのプロパティ(または既定値)の「フォント」タブで、UTF-8 の表示に対応した等幅フォントを指定します。

「MSゴシック」や「MyricaM M」が対応しているようです。なお、残念ながら Microsoft 製の視認性が高い等幅フォント Consolas は対応していません。

表示できない文字もある

絵文字や外国語など、日本語の文字コードには無い文字は、上手く表示できないようです。指定したフォントには該当文字が存在しない為だろうと思います。

しかしコードページ指定が全く無意味なわけではなく、コードページに従って内部処理は正常に行われています。その為、Unicode の文字列をコマンドでアプリケーションに渡したり、リダイレクトでファイルに書き込むことが出来るようになります。

なお、コードページ 932 のままでも一部の Unicode 文字は表示されますが、ファイルに書き込む等すると文字化けします。

PowerShellの場合

PowerShellではコードページ 932 と 65001 の何れでも、echo コマンドなどをリダイレクトしてファイルに保存すると、UTF-16LE(BOM付き)として出力されます。

また、コマンドプロンプトでは 932 のままだと文字化けするようなケースでも、PowerShell だと上手く動作する場合がありますが、65001 に変更したほうが確実に動作しますので、それについては省略します。

※ 全て2018年04月時点の Windows 10 (64bit) で確認しました。

参考サイト

プロセスの優先度を変更してアプリを起動する(Windows)

Windowsでアプリの優先度を予め変更して起動する方法は下記の通り。

  1. 任意の場所(デスクトップ等)に優先度を変更したいアプリのショートカットを作成。
  2. 作成したショートカットを右クリックしてプロパティを選択。
  3. 「リンク先」の先頭に cmd /c start "" /BELOWNORMAL を追加。

    入力例 cmd /c start "" /BELOWNORMAL "C:\Program Files\foo\bar.exe"

設定例(プロパティ画面)

こうして保存したショートカット経由で起動すると、アプリの実行優先度が変更されます。
優先度指定は/BELOWNORMALの部分で、下記のオプション名が指定できます。

オプション名 優先度
/REALTIME 最高 ※
/HIGH 高 ※
/ABOVENORMAL 通常以上
/NORMAL 通常
/BELOWNORMAL 通常以下
/LOW

/REALTIME/HIGHはWindows自体が操作不能になる可能性があります。動作を充分理解している場合以外は使わないようにしましょう。

多くのアプリは/NORMALで動作しているので、大抵は通常以下の/BELOWNORMALか通常以上の/ABOVENORMALで足りるでしょう。

動作はWindows 10で確認。8以前でもたぶん同様に設定できると思います。
以下、詳細解説(蛇足)。

cmdは必要?

この方法ではstartコマンド経由でアプリを起動しますが、start.exeという実行ファイルは存在せず、startはcmd.exeの機能である為、ショートカットする場合はcmd /c startという少々回りくどい指定をする必要があります。 なお、上記のように設定すると自動的にcmd.exeへのパスが補完されるので、パスまで入力する必要はありません。(C:\Windows\System32\cmd.exe等になる)

startコマンドの謎仕様

startコマンドには実行時のタイトルを指定するオプションがあり、単純に実行パスを "…" で括って渡すとこれがタイトルとして処理されてしまい、結果何も実行されません。なので、引用符で括ったパスを渡したい場合はダミーのタイトルが必要で、start ""と指定するのはその為です。

これ便利?

バックグラウンドで何か重い処理(動画のエンコード等)をしながら作業する場合に便利。
時々、XnConvertを使って画像の一括変換をするのだけれど、優先度が通常で起動する上、優先度を変更する設定も無いようで、変換中に他のプロセスの操作が重くなって困った。タスクマネージャから毎回変更してたけど面倒すぎたので、何かこうシンプルな解決策はないかなーと。

他の方法としては、こういうソフトもあるみたい。

それにしても、単純にプロパティで優先度くらい変更できてもいいのになーと思う。

参考サイト

「Dropboxに移動」を右クリックメニューから削除する

WindowsにDropboxをインストールすると、エクスプローラーの右クリックメニュー(コンテキストメニュー)へ「Dropbox」に移動 が追加されます。 しかしDropboxの設定には、この項目をメニューから削除する設定がありません。 その為、レジストリを編集する事になりますが比較的簡単に非表示化できますので、その方法をご紹介します。

対象OS

Windows 10 及び Windows 8, 7, Vista

変更の前に

レジストリの変更方法が解る方向けに書いています。レジストリに間違った変更を加えると Windowsの動作に支障をきたす可能性もありますので、変更作業の際はくれぐれもご注意ください。

設定方法

下記の手順に従って設定します。

  1. regedit(レジストリエディタ)を起動します。
  2. HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions」を開きます。
  3. 「右クリック>新規>キー」で新しいキー「Blocked」を作ります。
  4. Blockedを開き、「右クリック>新規>文字列値」で名前に「{ECD97DE5-3C8F-4ACB-AEEE-CCAB78F7711C}」と入力します。
  5. レジストリエディタを閉じて、Windowsを再起動します。(再サインインかエクスプローラの再起動でもOK)

レジストリエディタでShell Extensions\Blockedを開いた所

設定後は「Dropbox」に移動 が表示されなくなります。

表示状態に戻すには

この設定は特定のメニュー項目を非表示にしているだけなので、上記で追加した文字列値をBlockedから削除すれば設定前の表示状態に戻すことも可能です。

関連情報ページ