ファイルサイズを取得する<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Windows 7 で JMP 10.0.0 を使用していますが、JSL を使用して、ファイル パスが指定されたファイル サイズをバイト単位で決定したいと考えています。 これは、私が達成しようとしている構造の例です。JMP 10.0.0 では、「file size()」はオプションではありません。
f_path=ファイルを選択();
f_size=ファイルサイズ(f_path);
ファイルを開いたり読み込んだりせずにファイルサイズを確認する方法はありますか?
Re: ファイルサイズを取得する私のアプリケーションでは、kernel32 dll を使用して関数を宣言するのが最適です。
Re: ファイルサイズを取得するR機能が付いているのはいいですね、MS!
Windows の場合、これは難しい方法です。
// ファイルサイズ.jsl
fname = "c:/temp/bubble.jpg";
//*****************************************
// JMP バージョン 11 の場合
rc = if(ホストは(Windows) & JMPバージョン()=="11.0.0",
fs = ファイルサイズ(fname);
);
//*****************************************
// R file.info {base} を使用
// http://stat.ethz.ch/R-manual/R-devel/library/base/html/file.info.html
// さまざまなファイル情報、ディレクトリ、時間、ID などを含むデータ フレームを返します。
R 初期化();
R 送信(fname);
R submit("\[
df = ファイル.情報(fname);
]\");
fs = R get(df$size);
show(fs); // KB単位;
R 用語();
//*****************************************
// または、難しい方法で
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa364955(v=vs.85).aspx
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa364957(v=vs.85).aspx
kernel32 = DLL をロード( "kernel32" );
// createfile を使用してファイルへの参照、つまりファイル ハンドルを取得します
kernel32 << DeclareFunction( "CreateFileA", Convention( STDCALL ), Alias( "CreateFile" ),
Arg( AnsiString( 256 ), "lpFileName" ),
Arg( Int32, "dwDesiredAccess" ),
Arg( Int32, "dwShareMode" ),
Arg( IntPtr, "lpSecurityAttributes" ),
Arg( Int32, "dwCreationDisposition" ),
Arg( Int32, "dwFlagsAndAttributes" ),
Arg( UIntPtr, "hTemplateFile" ),
戻り値( Int32 )
);
open_existing = 3;
hFile = kernel32 << CreateFile( fname, 0, 0, 0, open_existing, 0, 0);
// GetFileSize にはファイル ハンドルが必要です (上記から)
kernel32 << DeclareFunction( "GetFileSizeEx", Convention( STDCALL ), Alias( "GetFileSizeEx" ),
Arg( Int32, "hFile" ),
Arg( Int32, "lpFileSize", update ),
戻り値( Int32 )
);
fs = 0;
rc = kernel32 << GetFileSizeEx( hFile, fs );
show(fs);
// 掃除
// http://msdn.microsoft.com/en-us/library/windows/desktop/ms724211(v=vs.85).aspx
kernel32 << DeclareFunction( "CloseHandle", Convention( STDCALL ), Alias( "CloseHandle" ),
Arg( Int32, "hFile" ),
戻り値( Int32 )
);
rc = kernel32 << CloseHandle( hFile );
kernel32 << DLL() をアンロードします。
よろしくお願いします、-マット
Re: ファイルサイズを取得するR がインストールされている場合、これは機能するはずです (Mac 用 JMP 10 でのみテストされています)。
R初期化() ;
私の進路=ファイルの選択() ;
R 実行( {私の進路} 、 {バツ} 、 「x <- file.info(mypath)$size」 ) ;
見せる(バツ) ;
R用語() ;
Re: ファイルサイズを取得するFile Size() 関数は JMP 11 で使用できます。
以下は、書籍『JMP Scripting Language の JSL Companion Applications』の第 2 章にあるスクリプト「2_Extra_MSDirUsingWeb.jsl」の一部を変更したものです。これは Windows でのみ機能する面倒なソリューションです。このスクリプトは少し冗長であり、機能と出力を示すための追加のコマンドが含まれていることに注意してください。完全なスクリプトでは、MS DOS の dir コマンドの構文が説明されています。
================================================= ================================================= ======
// cmd_dir は JMP サンプル データのリストを取得するコマンドです
// c:\temp\jmpDir.bat は実行するコマンド ファイルです
// c:\temp\dirOut.txt は dir コマンドの結果のファイルです
バットフィド= 「c:\temp\jmpDir.bat」 ;
アウトディレクトリ= 「c:\temp\dirOut.txt」 ;
// ファイルのフルパスを取得します
f_path0 =ファイルを選択する() ;
f_path =ファイルパスの変換( f_path 、ウィンドウズ) ;
// DOS の「dir」コマンドを構築します
cmd_txt = "\[dir /-C /T:C /S "]\"
|| f_path
|| "\[" > ]\"
||アウトディレクトリ;
見せる( cmd_txt ) ;
// 拡張子が .bat のファイルに保存します。Windows は .bat ファイルを解釈します
// スタートボタンの「ファイル名を指定して実行」ウィンドウと同じ
テキストファイルの保存(バットフィド、 cmd_txt ) ;
// Windows はこの「オープン」パス ファイルを「実行」として解釈します
t0 =今日() ;
ウェブ(バットフィド) ;
待って( 1 ) ;
// Windows が完了するまで少し待ちます。巨大なディレクトリの場合はさらに待ちます。
// 待機が唯一の制御であることに注意してから、ファイルが存在するかどうかを確認してください。
// 結果を示す
// 存在しない場合、または予想より古い場合に使用できるいくつかの「チェック」
もし( !ファイルが存在しています(アウトディレクトリ) | (作成日(アウトディレクトリ) - t0 > 10 ) 、
キャプション( 「dir コマンドに問題があり、実行されませんでした。 中絶します…」) ;
待って( 4 ) ;
キャプション(取り除く) ;
投げる() ;
) ;
_crlf = 「\!N」 ;
dir_results =言葉(テキストファイルの読み込み(アウトディレクトリ) 、 _crlf ) ;
dir_size_str =言葉( dir_results [ナイアイテム( dir_results ) - 1 ]) ;
f_サイズ=番号( dir_size_str [ 3 ]) ;
見せる( dir_size_str 、 f_サイズ) ; //バイト数
//=============================================== =============================
//以下のコマンドは、使用された DOS dir コマンドの結果を示すファイルを作成します。
// 結果ファイルを開く
dir_dt =開ける(
アウトディレクトリ、
列(名前( 「ディレクトリの結果」 ) =キャラクター) 、
インポート設定(
行末( CRLF ) 、
フィールドの終わり( CRLF ) 、 // 1 列のみを確保します
引用文を削除する( 1 ) 、
アポストロフィを引用符として使用する( 1 ) 、
ファイル全体をスキャン( 1 ) 、
空の列を数値として扱う( 0 ) 、
ラベル( 0 ) 、
データの開始( 1 ) 、
読むべき行(全て) 、
年の規則( 「10-90」 )
)
) ;