[ 新規に投稿する ]

「長いファイル名」260byte文字以上のフルパスorファイル名の対応にNo.41197
sasa さん 24/04/21 15:31 [ コメントを投稿する ]
  はじめまして、いつも秀丸エディタを愛用させていただいています

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

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


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

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


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

Win10でutf8ファイル名の使用は
設定 > 時刻と言語 > 言語 > 管理用言語の設定 > 管理 > Unicode対応では・・・ > システムロケールの変更
ベータ:ワールドワイド言語・・・ > チェック > OK > 再起動
です
[ ]
RE:41197 「長いファイル名」260byte文字以上のフルパスorファNo.41198
秀丸担当 さん 24/04/22 09:26 [ コメントを投稿する ]
  長いファイル名の260文字以上のパスには対応していないです。
対応するのは難しく、今後も難しいと思います。
以前V9.18で表示だけできていたというのはちょっとわからないですが、これは調べる必要がありそうです。
短縮ファイル名で動くパターンがあったか、あるいは超えてはいけない部分が超えていて、現在は直ったのかもしれず…
全て対応とまでいかなくても、読めるだけとか、限定的ならありかもしれません。
読めるようにできないか検討します。
[ ]
RE:41198 「長いファイル名」260byte文字以上のフルパスorファNo.41199
sasa さん 24/04/22 19:38 [ コメントを投稿する ]
  お返事ありがとうございます

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

読み込みの件ご検討のほどよろしくお願いいたしますm(_ _)m
[ ]
RE:41198 「長いファイル名」260byte文字以上のフルパスorファNo.41205
fzok4234 さん 24/04/25 20:43 [ コメントを投稿する ]
  横から失礼いたします。Fzok4234 です。


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

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


実際に当方で
H:\123456789\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.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文字以上のフルパスorファNo.41206
fzok4234 さん 24/04/26 13:05 [ コメントを投稿する ]
  言い忘れていたことがありましたが、テストした当方の環境では
fsutil 8dot3name set 1
コマンドで全てのドライブで 8.3 形式の短いファイル名が生成されないように
設定されています。


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

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

コマンドプロンプトに関しては
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文字以上のフルパスorファNo.41209
秀丸担当 さん 24/04/26 17:19 [ コメントを投稿する ]
  そういえばそういうこともありました。
秀丸エディタの場合、[その他]→[動作環境]→[検索]→[grepの動作]で、変なワイルドカードにひっかからない対策があったりします。

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

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

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

[ 新規に投稿する ]