[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[port139ml:02662] Re: 255文字までのファイルを扱うコマンド群



たかはしもとのぶです。

>> C でディレクトリを操作するのって、それなりに面倒です。
>
>なるほど、ということは既存コードの有効利用?ということで
>もとのぶ先生のコードを参考に yakitori.exe が機能を実装
>すればよりいいんでしょうかね...

yakitori.exe とはコマンドの機能自体がやや違うような気もしますが、
yakitori.exe のソースがあれば、マージするとか、もしくは yakitori.exe
の機能を streamls.exe が採り入れるとか、やりやすいとは思います。

というか、ディレクトリを再帰的に処理するコードとか、いまちょっと探して
も

http://www14.big.or.jp/~ken1/tech/tech5.html
http://www.sm.rim.or.jp/~shishido/subdir.html

とかあるんで、わたしのつたないプログラミング能力でも、このあたりを参考
にすれば、ちょっと時間あればできるとは思うんですが、何かちょっと、ちょっ
との積み上げでここ数日だめだめになってしまってるような気もするんで……

と思ってたんですが、FindFirstFile() のドキュメント

http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_findfirstfile.ht
にも、例の Unicode 版云々の記述があるので、やっぱり自分で実装しないと
駄目かも (T_T)

>なんのことはない、yakitori.exe 自体が 255文字ファイルを認識
>できていませんでした(T_T)

多分上記の問題で、FindFirstFile() の Unicode 版使って \\?\ から始まる
パスを使うということをしてないからだと思います。

# 何で NTFS ネイティブのパス長を使おうとするだけでここまではまらないと
  いけないのかしら

まぁ、もう少し現実逃避して streamls.exe には再帰オプション実装してみま
す。

でも、そう考えるとなにげに長いファイル名に対応している FOR コマンドは
偉いかも。

>再帰自体は以下のような感じでできます。
>C:\TEMP が再帰したいところのトップ
>
>for /R C:\TEMP %F IN (*) DO @echo %F && C:\TEMP\streamls.exe %F

-----
TAKAHASHI, Motonobu (たかはしもとのぶ)         monyo@xxxxxxxxxxxxxx
                                               http://www.monyo.com/