ディレクトリ存在判別
name = "C:\test" foldersearch name if result then messagebox "directory" name else messagebox "not directory" name endif一つのコマンドでファイルとディレクトリの判別をしたいならばgetfileattr
name = "C:\test" getfileattr name if result < 0 then messagebox "not found" name elseif result & $10 then messagebox "directory" name else messagebox "file" name endif
下記サイトでは、サイズがゼロかどうかで判別できるとありますが、VC++の _stat() の 仕様では規定されていないので、厳密に正しいやり方ではないと考えられます。
空のファイルの場合は当然サイズが 0 になるので、この場合は確実に誤認識しますね。
なるほど、理解しました。既存のマクロコマンドで実現できますね。 後で、ドキュメントのほうは追記しておこうと思います。 ちなみに、filestatマクロコマンドがファイル以外に対しても、動いて しまっているのがまずいですよね。st_mode フィールドが_S_IFREGでなければ、 エラー(result = -1)としたほうがよいでしょうか?
動作を変えるのは既存のマクロが動かなくなる可能性が有るので反対です。
filesarch もファイルとディレクトリの両方が対象になっているので、変える必要は無いと思います。
またディレクトリをエラーにすると、今まで出来たディレクトリの最終更新時刻の確認が出来なくなるので、この点でも反対です。
なるほど。
filestatマクロコマンドのヘルプに、ディレクトリに対しても使える、ということを書いておけばよいですね。 現状の書き方だと、ファイルのみの使用を想定していたのかと思っていたので。
細節