Windowsで末尾空白のフォルダを作ってしまったときの対応法

スポンサーリンク

なんかの拍子に、末尾に空白があるフォルダを作ってしまい、操作不能になってしまった時の対処法メモ。

PS R:\a> ls


    ディレクトリ: R:\a


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2025/05/19     12:22                MotionCam

MotionCamというフォルダがあるように見えますが、操作できません。

PS R:\a> mv MotionCam b
mv : パス 'R:\a\MotionCam' が存在しないため検出できません。
発生場所 行:1 文字:1
+ mv MotionCam b
+ ~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (R:\a\MotionCam:String) [Move-Item], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.MoveItemCommand

mvコマンドが通用しません。で、なぜかというと、実は「MotionCam 」(最後にスペースを含む)というフォルダ名になっているからです。下記のコマンドで確認すると、最後に「32」つまりスペースが入っていることがわかります。

PS R:\a> Get-ChildItem -Name | ForEach-Object {
>>     $bytes = [System.Text.Encoding]::UTF8.GetBytes($_)
>>     "{0}  ->  {1}" -f $_, ($bytes -join ' ')
>> }
MotionCam  ->  77 111 116 105 111 110 67 97 109
MotionCam   ->  77 111 116 105 111 110 67 97 109 32
スポンサーリンク

解決策 ― Win32 正規化をバイパスする

特殊文字を含むパスは、UNC 風の長いパス接頭辞 \\?\ を付け、さらに PowerShell では -LiteralPath を使うと確実に操作できます。

下記のコマンドでリネーム成功します。

PS R:\a> Rename-Item -LiteralPath "\\?\R:\a\MotionCam " -NewName "b"

コメント

タイトルとURLをコピーしました