特殊ファイル名が原因でバックアップフォルダが削除できなかった問題の解決方法

バックアップ用フォルダ「H:\backup」を削除しようとしたところ、以下のエラーメッセージが表示されました。

H:\backup\src\php\00. - 指定されたファイルが見つかりません。

このエラーは、ファイル名に末尾のピリオド(「00.」)など、Windows の通常のファイル名解決では取り扱いが難しい特殊文字が含まれていることが原因でした。

解決手順

  1. 属性・権限の確認と解除
    対象フォルダにシステム属性・隠し属性、読み取り専用属性が設定されている場合、以下のコマンドで属性を解除しました。
    attrib -s -h -r "H:\backup" /S /D
    また、所有権を取得し、Administrators に完全アクセス権を付与する手順も実施しました。 takeown /F "H:\backup" /R /D Y
    icacls "H:\backup" /grant administrators:F /T
  2. 拡張パスを使用して削除
    しかし、通常の削除コマンド(rd /s /q "H:\backup")ではエラーが発生したため、Windows の「拡張パス」を利用する方法を採用しました。
    拡張パスを使用すると、ファイル名の末尾にピリオドや空白が含まれている場合でも正しく扱うことができます。
    以下のコマンドを管理者権限のコマンドプロンプトで実行したところ、無事フォルダの削除に成功しました。
    rd /s /q "\\?\H:\backup"

まとめ

今回のケースでは、WSL バックアップフォルダ内に特殊なファイル名が含まれていたため、通常の削除コマンドではエラーが発生しましたが、拡張パス(\\?\ プレフィックス)を使用することで問題を解消できました。
この手法は、Windows 環境下でファイル名の取り扱いに関する制限を回避する際に非常に有効です。

今後、同様の問題に直面した場合は、ぜひ本記事で紹介した手順を参考にしてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です