existfileの調査項目追加要望No.32932
K'zawa さん 14/02/12 15:03
 
こんにちは、K'zawaです。

existfile関数の第2パラメーターに1を指定したときに調べられる項目に、
ファイルが0バイトか否かを追加していただけないでしょうか?
runexの標準エラーの出力先をファイルにしたときに必ずファイルができている
ので、チェックして削除したいです。あるいは0バイトのときだけマクロの続き
を実行するなども考えられます。

秀丸エディタの場合は開いて調べることもできますが、秀丸メールの場合も
考えると難しいので。

[ ]
RE:32932 existfileの調査項目追加要望No.32933
秀丸担当 さん 14/02/12 17:13
 

existfileのパラメータによってそのようにすることは技術的には簡単ですが、
仕様的には意味が離れてしまうという気がします。

属性を得ること自体も意味が違うのですが、existfile("c:\\folder\\*.*");で
ディレクトリの存在をチェックするという使われ方をしている人がいて、その延
長としてディレクトリ属性を得るために追加していました。

秀丸メールの場合は、TKInfo.dllの関数としてBypass_GetFileSizeがあります。

参考までの情報として、COMを使って取得する方法も考えられます。
$f = "C:\\folder\\xxx.xxx";
#objFso=createobject( "Scripting.FileSystemObject" );
#objFile=member(#objFso,"GetFile", $f );
#size = member(#objFile,"Size");
message str(#size);
endmacro;

こういった方法ではどうでしょうか。

[ ]
RE:32933 existfileの調査項目追加要望No.32934
K'zawa さん 14/02/13 18:54
 
秀丸担当さん、こんにちは。
K'zawaです。

いろいろな方法を教えていただきありがとうございます。
とりあえずCOMの方法を使わさせていただきます。

>existfileのパラメータによってそのようにすることは技術的には簡単ですが、
>仕様的には意味が離れてしまうという気がします。

ということなので、あえて聞いてみますが、runexの標準出力/標準エラー出力
それぞれのサイズ(0か否かでも可)をgetresultexで得るという方向性なら
よいのでしょうか?

[ ]
RE:32934 existfileの調査項目追加要望No.32935
アルビレオ さん 14/02/13 21:19
 
ユーザーのアルビレオです。

VISTA以降ならwindowsの標準コマンド forfiles.exe を使って実現できますね。

 firfiles /m <ファイル名> /c "cmd /c if '@fsize'=='0' del @file"

を実行すると「<ファイル名>のファイルサイズが0ならそのファイルを削除」を
行えます。

forfilesの使い方については以下を参考にしてください
http://www.atmarkit.co.jp/fwin2k/win2ktips/1137forfiles/forfiles.html

[ ]
RE:32935 existfileの調査項目追加要望No.32936
秀丸担当 さん 14/02/14 13:40
 

>ということなので、あえて聞いてみますが、runexの標準出力/標準エラー出力
>それぞれのサイズ(0か否かでも可)をgetresultexで得るという方向性なら
>よいのでしょうか?

そういう方向性なら仕様的にも問題ないと思います。

または、前のコメントと違うことになってすみませんが、やっぱりexistfileで
サイズを取得できてもいい気がしてきました。
なぜかというと、いままで、existfileはWin32APIのFindFirstFileを呼んでいる
だけという説明を会議室上でしてきていました。
最初はワイルドカードのこともヘルプに書いていなかったのですが、
FindFirstFileと同じだからということで実際使われている方もいて、ヘルプに
も追記していました。
FindFirstFileで得られる情報は、属性だけでなく、サイズ、更新日時などもあ
りました。
existfile($f,1)でサイズが0かどうかのビットを返すことを考えていて違和感が
ありましたが、existfileはFindFirstFileと同じと考えると、existfile($f,2)
でサイズもあってもよさそうでした。
改めて最初のご提案に近いexistfileでサイズを得られる方向でやってみようと
思います。

>VISTA以降ならwindowsの標準コマンド forfiles.exe を使って実現できますね。

forfilesというコマンドもあるのですね。参考になります。

[ ]
RE:32936 existfileの調査項目追加要望No.32937
K'zawa さん 14/02/14 14:57
 
秀丸担当さん、こんにちは。
K'zawaです。

>ありましたが、existfileはFindFirstFileと同じと考えると、existfile($f,2)
>でサイズもあってもよさそうでした。
>改めて最初のご提案に近いexistfileでサイズを得られる方向でやってみようと
>思います。

ありがとうございます。
if の条件式に直接入れられるのが使いやすくてよいです。

[ ]
RE:32935 existfileの調査項目追加要望No.32938
K'zawa さん 14/02/14 14:57
 
アルビレオさん、こんにちは。
K'zawaです。

>VISTA以降ならwindowsの標準コマンド forfiles.exe を使って実現できますね。

ありがとうございます。そのコマンドは知りませんでした。
何かのときに使ってみようと思います。
(たぶんバッチファイルでしょうけど…)

[ ]