「長いファイル名」260byte文字以上のフルNo.41197
sasa さん 24/04/21 15:31
 
はじめまして、いつも秀丸エディタを愛用させていただいています

「長いファイル名」260byte文字以上のフルパスorファイル名の対応につきまして
秀丸でも編集や保存できるようになりますでしょうか?

一応、hm918_x64_signed では表示だけはできていたのですが
hm934_x64_signed 現在最新版では表示もできなくなってしまいました・・・


以前から同じような内容が投稿されているかと思われますが
win10では2016年頃に対応可能になったようで
gpedit.msc > コンピューターの構成 > 管理用テンプレート > システム > ファイル
システム > Win32の長いパスを有効にする
有効 > 再起動 すると260文字以上が使用可能に (レジストリも同時にLongPathsEnab
ledが1になります

実際使えるのは
PowerShell のコマンド Rename-Item New-Item などで編集可能
winメモ帳での作成保存・編集・別名の保存可能
Explorerでは移動・ファイル作成は出来ても、長い名前のリネーム・やフォルダの作
成はできません;


長いファイル名を必要としている理由がutf8のファイル名を使用していまして
全角1文字が3byteなので、フォルダ名&ファイル名込だと
意外とすぐに260byteを超えてしまうことが多いもので・・・

Win10でutf8ファイル名の使用は
設定 > 時刻と言語 > 言語 > 管理用言語の設定 > 管理 > Unicode対応では・・・ >
 システムロケールの変更
ベータ:ワールドワイド言語・・・ > チェック > OK > 再起動
です

[ ]
RE:41197 「長いファイル名」260byte文字No.41198
秀丸担当 さん 24/04/22 09:26
 
長いファイル名の260文字以上のパスには対応していないです。
対応するのは難しく、今後も難しいと思います。
以前V9.18で表示だけできていたというのはちょっとわからないですが、これは調べ
る必要がありそうです。
短縮ファイル名で動くパターンがあったか、あるいは超えてはいけない部分が超えて
いて、現在は直ったのかもしれず…
全て対応とまでいかなくても、読めるだけとか、限定的ならありかもしれません。
読めるようにできないか検討します。

[ ]
RE:41198 「長いファイル名」260byte文字No.41199
sasa さん 24/04/22 19:38
 
お返事ありがとうございます

Windowsが今後どんな変更されるかわかりませんが(笑
来たる未来に備えあれば、と思ったりもしてみたりしたもので・・・

読み込みの件ご検討のほどよろしくお願いいたしますm(_ _)m

[ ]
RE:41198 「長いファイル名」260byte文字No.41205
fzok4234 さん 24/04/25 20:43
 
横から失礼いたします。Fzok4234 です。


> 長いファイル名の260文字以上のパスには対応していないです。
> 対応するのは難しく、今後も難しいと思います。

とのことですが、現状では、たとえ秀丸エディタで「開いている」ファイルのパスが
 259 文字以下であっても
「ファイルタイプ別の設定」->「バックアップ」や、「動作環境」->「自動保存」の
機能を使う際に、
「自動保存先」のパスが 259 文字を超えてしまって正常に動作しない可能性を抱え
ております。


実際に当方で
H:\123456789\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaa.txt
というパスのファイルを編集するテストを行ってみました。このパスは、ディレクト
リパスが 13 文字で
ファイル名が 246 文字となっており、合計のフルパス長は丁度 259 文字です。

バックアップ先は「動作環境」->「保存」の「作成場所」に
C:\Users\<UserName>\Documents\Hidemaruo\Hidemaru\Backup
と指定し、また、自動保存先は「動作環境」->「自動保存」の「指定フォルダに自動
保存する」に
C:\Users\<UserName>\Documents\Hidemaruo\Hidemaru\AutoSave
と指定しました。いずれのディレクトリパスも明らかに 13 文字を超えております。

このとき、バックアップ先と自動保存先のいずれのディレクトリにも対象ファイルの
コピーは一切生成されて
おりませんでした。


このことから、gpedit.msc の「Win32の長いパスを有効にする」を有効にした環境を
考慮した
ファイルパスバッファの 32767 文字への拡張は、できる限り早く行った方がよい気
がします。

また、このバッファ拡張の対応が完了するまでの暫定処置として、バックアップ先や
自動保存先のパスが
259 文字を超えた場合は、せめて SAV0123.tmp などといった適当な短い名前で確実
に保存処理が行えるように
した方がよいと思われます。


テストした秀丸エディタは 9.35β3 Float x64 です。



[ ]
RE:41205 「長いファイル名」260byte文字No.41206
fzok4234 さん 24/04/26 13:05
 
言い忘れていたことがありましたが、テストした当方の環境では
fsutil 8dot3name set 1
コマンドで全てのドライブで 8.3 形式の短いファイル名が生成されないように
設定されています。



[ ]
RE:41206 「長いファイル名」260byte文字No.41207
秀丸担当 さん 24/04/26 15:38
 
通常は短縮ファイル名でファイル名を渡されたとき、秀丸エディタは、長いファイル
名(従来の260文字のほう)に変換しようとしています。
V9.35β4では、長いファイル名が260文字を超える場合は変換せず短縮ファイル名の
まま扱うようにしてみています。
バックアップなどは特に変えていないですが、このあたりも対策したほうがよさそう
です。
8.3形式が無効な場合は自前で生成のほうがいいかもしれないですが、完全サポート
とか目指すとたぶん至る所で無理が出てくると思います。
8.3形式を無効にするのは、Windows95より前のアプリのための互換を、もうええやろ
という感じで無くすものだと思いますが、260文字を超えることを想定する場合は有
効にしたほうがいいような気がします。

[ ]
RE:41207 「長いファイル名」260byte文字No.41208
fzok4234 さん 24/04/26 16:43
 
> 8.3形式を無効にするのは、Windows95より前のアプリのための互換を、もうええや
>ろという感じで
> 無くすものだと思いますが、260文字を超えることを想定する場合は有効にしたほ
>うがいいような
> 気がします。

一応、当方で 8.3 形式を無効にしている理由は、コマンドプロンプトや .NET Frame
work などの
ワイルドカードの処理で思わぬファイルがマッチしてしまうのを防止するためです。

コマンドプロンプトに関しては
https://atmarkit.itmedia.co.jp/fwin2k/win2ktips/1200disable83/disable83.html
に、.NET Framework の例では
https://learn.microsoft.com/en-us/dotnet/api/system.io.directory.getfiles?view=net-8.0#system-io-directory-getfiles
(system-string-system-string)
の下の方の Note に紹介されている通りです。

このことから、闇雲に 8.3 形式を復活させるのはリスクを伴うように感じられます。
それよりかは
ユーザー自身が実行可能な長いパスへの対処法の提案としては
 ・subst コマンドで深いディレクトリ階層をドライブ文字 1 個で済むようにする。
 ・長いパスのファイルのシンボリックリンクを比較的浅い階層に短めの名前で作成
する。
といった方法がより妥当であると思いますが、いかがでしょうか。



[ ]
RE:41208 「長いファイル名」260byte文字No.41209
秀丸担当 さん 24/04/26 17:19
 
そういえばそういうこともありました。
秀丸エディタの場合、[その他]→[動作環境]→[検索]→[grepの動作]で、変なワイル
ドカードにひっかからない対策があったりします。

他のアプリで変なワイルドカードにひっかかるものがあるとしたら、長いファイル名
対応の以前に、変なワイルドカードにひっかからない対策を求めていったほうがいい
と思います。
ですがコマンドプロンプトやメンテナンスが無いアプリなど無理なこともあると思い
ます。

>ユーザー自身が実行可能な長いパスへの対処法の提案としては
> ・subst コマンドで深いディレクトリ階層をドライブ文字 1 個で済むようにする。
> ・長いパスのファイルのシンボリックリンクを比較的浅い階層に短めの名前で作成
>する。
>といった方法がより妥当であると思いますが、いかがでしょうか。

それはそうだと思います。
それが一番なんじゃないかと思います。

[ ]