Windowsのパス文字列扱いを観察してみたので、備忘録。
パス文字列長は260文字以下。259文字まで。
PS C:\01234567890123456789012345678901234567890123456789\01234567890123456789012345678901234567890123456789\01234567890123456789012345678901234567890123456789\01234567890123456789012345678901234567890123456789> new-item -ItemType file -Path 12345678901234567890123456789012345678901234567890123
new-item : パス 'C:\01234567890123456789012345678901234567890123456789\01234567890123456789012345678901234567890123456789\01234567890123456789012345678901234567890123456789\01234567890123456789012345678901234567890123456789\1234567890123456789012345
6789012345678901234567890123' の一部が見つかりませんでした。
発生場所 行:1 文字:1
+ new-item -ItemType file -Path 123456789012345678901234567890123456789 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (C:\012345678901...901234567890123:String) [New-Item], DirectoryNotFoundException
+ FullyQualifiedErrorId : NewItemIOError,Microsoft.PowerShell.Commands.NewItemCommand
PS C:\01234567890123456789012345678901234567890123456789\01234567890123456789012345678901234567890123456789\01234567890123456789012345678901234567890123456789\01234567890123456789012345678901234567890123456789> new-item -ItemType file -Path 1234567890123456789012345678901234567890123456789012
ここで、フォルダのC:\0...89\までで3文字 + 51文字 x4 = 207文字
作成したファイルが52文字である。
PS C:\01234567890123456789012345678901234567890123456789\01234567890123456789012345678901234567890123456789\01234567890123456789012345678901234567890123456789\01234567890123456789012345678901234567890123456789> Get-ChildItem | % {$_.FullName} | % {$_.Length}
259
さて、260文字制限は、フルパスの文字数なのでネットワークドライブとしてマウントすると、さらに深い階層に出来る。
例えば、C:\01234567890123456789012345678901234567890123456789\01234567890123456789012345678901234567890123456789\01234567890123456789012345678901234567890123456789\01234567890123456789012345678901234567890123456789をネットワークドライブZ:にマウントして、Z:に長いパス名のフォルダを格納する事が出来る。
無論、260文字を超えるパスのフォルダやファイルはC:から始まるパス表記を指定して削除する事は出来ない。
2020-01-29
登録:
コメントの投稿 (Atom)
0 コメント:
コメントを投稿