Microsoft のオープンソースで興味深い物を見つけました。 2022-11-07
「Windows NT ファイルマネージャーのリメーク版です」
“Winfile は、Windows10 1607 以降で最大 1024 文字のパスを処理できます。
管理者として HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled=1 を設定します”
(さすがに、32,767文字は無理なようですが期待できそうですね… しかし期待外れのため issues#357 を投げました ^^);
回答 2022-11-15
General
NTFS は、最大 32767 文字の utf-16 文字のパス + ファイル名をサポートします。
ただし、個々のコンポーネント(サブフォルダー/最終ファイル)は、255 文字の制限があります。
Your Case
Winfile は、最大 1024 文字の utf-16 文字のパス + ファイル名をサポートします。
あなたは、上記の一般的な NTFS 制限に違反する、256 文字を超える単一のファイルを作成しようとしています。
Winfile と他のツールはこれを克服できません。
Winfile が NTFS 仕様に従って最大 1024 文字の長いパスで動作することを証明する小さなテストは、ここにあります。
AWKスクリプト (UTF-8、LF)
ファイルを作成しテストデータを書き込みます (
パス: 256 char x 125 = 32000)
## LongPath <Input File...>
#
BEGIN {
prefix = "D:/X" # (4char)
path50 = "----+----1----+----2----+----3----+----4----+----5"
path100 = path50 "----+----6----+----7----+----8----+----9----+----0"
path250 = path100 path100 path50
path32k = ""
loop = int((32000 - 4) / 256)
for (i = 0; i < loop; i++) {
path32k = path32k sprintf("/%05d", i+1) path250 # (6+250char)
}
filename = "/X" path100 path100 \
"----+----1----+----2----+----3----+----4----+-" ".txt" # (2+250char)
path = prefix path32k filename
print "Path length:", length(path) "\n" path
}
{
print NR, $0 > path
}
実行結果
Path length: 32000
D:/X/00001----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2----+----3----+----4----+----5/00002----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2----+----3----+----4----+----5/00003
...
makefile
longPath :
$(PLUS) sample/LongPath.awk sample/UTF8hello.txt