powershellのエラー「一部が見つかりませんでした」はレジストリ操作で解決。

IT技術
スポンサーリンク

powershellでフォルダの数、ファイル数を計測していた作業中にエラーが発生しました。

ネットワークパスを指定してdirを使いたい。powershellを使えば実現可能。
フォルダの容量を調べるときにこんなことしてませんか? ファイルサーバーの各フォルダ容量を調べたい! 1つづつ選択して右クリックしてプロパティ・・・・。 さすがに効率悪すぎですよね。 フリーソフトでdisk...

「(フォルダ名) 一部が見つかりませんでした」

「一部が見つかりませんでした」ってどうゆうこと???

最初なんのことやら分かりませんでしたが、原因は簡単なことでした。

スポンサーリンク

深い階層にあるファイルについて「一部が見つかりませんでした」

エラーメッセージにあるフォルダをまずチェックしました。

すると中にあるファイルの名前が異常に長い。。。

そしてそのファイルがある場所も超深い階層にある。

これが原因です。

通常の設定ではファイル名・パスの合計文字数が260文字を超えるとコマンドで参照することができません。

260文字制限が邪魔をしてGet-ChildItemコマンドで「一部が見つかりませんでした」というエラーが出力されたのです。

260文字制限解決方法

以下コマンドをpowershellで実行しましょう。

※Set-ItemPropertyの後に半角スペースがあります。

Set-ItemProperty "Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" -Name LongPathsEnabled -value 1
その後に以下コマンド実行後「1」と表示されればOKです。
※Get-Item -Pathの後に半角スペースがあります。
(Get-Item -Path "Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem").GetValue("LongPathsEnabled")

その後Get-ChildItemコマンドでファイル数・フォルダ数を計測してみたところエラー無く完了することができました。

「一部が見つかりませんでした」というエラーが出たら260文字制限を疑ってみると解決するかもしれません。

コメント

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