Windows11 エクスプローラーのミュージック、ビデオなどのフォルダでファイル表示が遅い時の対処

概要

Windowsのフォルダーはフォルダーの種類が全般、ミュージック、ビデオなどの種類を選択出来ます。困った事としてファイルが多いと表示が遅く、操作しづらい機能です。ファイルのメタデータを読み込む為、メタデータの非表示をする事でファイル表示は早くなるという設定の紹介です。Windows11で検証しています。
このページでは2種類の手順と、不具合対応を説明します。

初心者向け:GUIでミュージックフォルダーの表示項目を一括変更する方法

フォルダーの項目を変更してから、ミュージックやビデオなど同じ種類のフォルダーを一括変更する方法です。
理由として、ミュージックやビデオ、ピクチャの初期設定では、アーティスト情報やアルバム、カバーアート、トラック番号、カメラの情報など多数のメタデータ(ID3、RIFF チャンク、EXIF、Embedded thumbnailnなどから)を読み込みます。また、この処理はフォルダを開く都度実行されているため、表示まで時間がかかっています。下記の設定はそのメタデータを非表示にして読み込み時間を削減し、一括で同じミュージックフォルダへ反映させる手順です。

手順
ミュージックフォルダを例に書きますが、ビデオフォルダなども同様の手順です。
フォルダーの種類という項目を変更せずに表示される情報からメタデータを削除して表示を改善します。

  1. ミュージックフォルダを開く
  2. 表示をクリックして詳細を選択する
  3. ミュージックの初期設定では、トラック、タイトル、参加アーティスト、アルバム が表示されています。
    この項目を非表示にする。"項目名を右クリック"すると項目を選択、非選択できます。
  4. 非表示にした後、種類、サイズ、更新日時選択して表示する。この項目はドキュメント設定のフォルダと同じ項目で、メタデータではない項目です。
  5. エクスプローラーの「…」をクリックして、オプションを開く
  6. フォルダー オプションを開き、表示タブを選択
  7. フォルダーに適用 をクリックする。フォルダーに適用をすると、現在作業中の種類と同じフォルダー(ミュージック)が同じ項目で表示されます。
    • フォルダーの種類はミュージックのままです
    • フォルダーの種類がミュージックの場合、同じ設定が適用されます
    • 新規作成フォルダも同じ設定が適用されます
    • ほかのPCなどから新たにミュージック設定のフォルダをコピーした場合は再度実行する必要があります、desktop.iniファイルが優先されている可能性があります。

コマンドが使える人向け:レジストリでフォルダー設定を一括変更する方法

レジストリを追加する方法です。レジストリエディタでの変更だと間違った場合に気づきづらいのでコマンドで実行してみましょう。この設定で追加するレジストリは比較的リスクが少ない為、初心者でも間違えなければ問題がありませんし、記述を間違えたとしても修正が出来る程度の項目です。

このコマンドで設定実行すると、フォルダーの種類問わず、全てのフォルダは全般に変わります。
設定を削除すると実行前の状態に戻ります。

コマンドプロンプト、またはPowerShellを管理者権限で開いて実行します。
下記をコピペで使えます。

設定するコマンド

BAT (Batchfile)
reg add "HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell" /v FolderType /t REG_SZ /d NotSpecified

設定を削除するコマンド

BAT (Batchfile)
reg delete "HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell" /v FolderType

上手くいかない時はレジストリ、desktop.iniが原因の可能性がある

パソコンが苦手な方にはお薦めはしません。Windows中上級者向けです。
フォルダ設定をフォルダ毎に行ってきた結果、設定を一括で変更できないケースはあります。

その場合、設定を一度レジストリ削除してリセットしたり、フォルダ毎に生成されるdesktop.iniファイルを削除します。これはフォルダーオプション、フォルダープロパティともにフォルダー設定を変更すると、desktop.iniが各フォルダに作成されたり、レジストリに設定が保存される為です。また、desktop.iniファイルよりレジストリのBagMRU、Bugsにある設定が優先されます。そのため、一度、これらレジストリを削除する事で状況はリセットできます。レジストリを削除してもdesktop.iniは削除されません。その為、フォルダ毎のdesktop.iniファイルの削除を一括で行うスクリプトも下記に書きました。

コマンドでレジストリから設定を削除する(全てのフォルダがOSデフォルトに戻る)
このレジストリは削除した後、Explorerが再起動される事で再構築されます。フォルダーオプションのフォルダのリセットと類似した作業ですがレジストリの削除だとGUIでは削除できない項目も削除できます。
BagMRU削除

BAT (Batchfile)
reg delete "HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\BagMRU"

Bags削除

BAT (Batchfile)
reg delete "HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags"

desktop.iniを一括削除するBat
実行内容
このサンプルは 現在サインインしているユーザーのMusicフォルダのサブフォルダー全てを対象にしており、且つ Musicフォルダにデフォルトで配置されたdesktop.iniは除外して実行します。実行後はMusicフォルダにテキストでログが残ります。設定エリアにあるRootのMusicをVideoに変更すればビデオフォルダを対象にするなどの変更が可能です。

BAT (Batchfile)
@echo off
setlocal enabledelayedexpansion

REM ─────────────────────────────────────────
REM 設定エリア
set "ROOT=%USERPROFILE%\Music"
set "LOGFILE=%ROOT%\desktop_ini_revert.log"
REM ─────────────────────────────────────────

REM ログファイル初期化
echo [%date% %time%] デスクトップINI 復元バッチ開始 > "%LOGFILE%"

echo. >> "%LOGFILE%"
echo [%date% %time%] ルートフォルダー: %ROOT% を処理 >> "%LOGFILE%"

REM 再帰的にサブフォルダーをループ(ルート自身は除外)
for /R "%ROOT%" %%D in (.) do (
    if /I not "%%~fD"=="%ROOT%" (
        set "iniPath=%%~fD\desktop.ini"
        if exist "!iniPath!" (
            echo [%date% %time%] 削除: %%~fD\desktop.ini >> "%LOGFILE%"
            del /F /Q /A:HS "%%~fD\desktop.ini"
            attrib -s "%%~fD"
        ) else (
            echo [%date% %time%] 存在せずスキップ: %%~fD\desktop.ini >> "%LOGFILE%"
        )
    )
)

echo [%date% %time%] デスクトップINI 削除バッチ完了 >> "%LOGFILE%"

echo.
echo ログファイル: %LOGFILE%
pause

desktop.iniファイルを作成する
作ったので自分用のメモに残しますが、この方法を使う事はない。マニアックな用途にしか使えません。

実行内容
このスクリプトはdesktop.iniを指定したMusicフォルダのサブフォルダー全てに作成します。
iniの内容はDocumentsを指定しているのみです。実行後、Musicフォルダにログが保存されます。
RootのMusicをVideoなどに変更すると実行するフォルダを変更出来ます。

BAT (Batchfile)
@echo off
setlocal enabledelayedexpansion

REM ─────────────────────────────────────────
REM 設定エリア
set "ROOT=%USERPROFILE%\Music"
set "TYPE=Documents"
set "LOGFILE=%ROOT%\desktop_ini_deploy.log"
REM ─────────────────────────────────────────

REM ログファイル初期化
echo [%date% %time%] デスクトップINI 配布バッチ開始 > "%LOGFILE%"

REM テンポラリに desktop.ini テンプレートを作成
> "%TEMP%\_desktop.ini" (
  echo [ViewState]
  echo FolderType=%TYPE%
)

echo. >> "%LOGFILE%"
echo [%date% %time%] ルートフォルダー: %ROOT% を処理 >> "%LOGFILE%"

REM 再帰的にサブフォルダーをループ(ルート自身は除外)
for /R "%ROOT%" %%D in (.) do (
    if /I not "%%~fD"=="%ROOT%" (
        set "iniPath=%%~fD\desktop.ini"
        if exist "!iniPath!" (
            echo [%date% %time%] スキップ(既存あり): %%~fD >> "%LOGFILE%"
        ) else (
            echo [%date% %time%] 配置: %%~fD >> "%LOGFILE%"
            copy /Y "%TEMP%\_desktop.ini" "%%~fD\desktop.ini" >nul
            attrib +s "%%~fD"
            attrib +h +s "%%~fD\desktop.ini"
        )
    )
)

REM テンポラリ削除
del "%TEMP%\_desktop.ini"

echo [%date% %time%] デスクトップINI 配布バッチ完了 >> "%LOGFILE%"
echo.
echo ログファイル: %LOGFILE%
pause



Bat作成時は
スクリプトをメモ帳にコピペして拡張子をbatに変更すると使えます。興味ある方は検索してみてください。
スクリプトに日本語が入っている場合、メモ帳でbatを保存する時の文字コードはANSIに設定すると日本語が正しく表示されます。