取得檔案大小<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我在 Windows 7 中使用 JMP 10.0.0,並且希望使用 JSL 來確定給定檔案路徑的檔案大小(以位元組為單位)。 這是我想要實現的範例結構,其中在 JMP 10.0.0 中「檔案大小()」不是一個選項。
f_path=選擇檔案();
f_size=檔案大小(f_path);
有沒有一種方法可以在不開啟或載入檔案的情況下確定檔案大小?
回覆:取得檔案大小感謝您的所有回應。使用 kernel32 dll 聲明函數最適合我的應用程式。
回覆:取得檔案大小不錯的一款,帶有 R 功能,MS!
對於 Windows,這是一個困難的方法。
// 檔案大小.jsl
fname = "c:/temp/bubble.jpg";
//************************************************
// 使用 JMP 版本 11
rc = if(主機是(Windows) & JMP Version()=="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 提交(“\[
df = 文件.info(fname);
]\");
fs = R get(df$size);
顯示(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", 約定( 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 )
);
開放現有 = 3;
hFile = kernel32 << CreateFile( fname, 0, 0, 0, open_existing, 0, 0);
// GetFileSize 需要檔案句柄(從上方而來)
kernel32 << DeclareFunction( "GetFileSizeEx", 約定( STDCALL ), Alias( "GetFileSizeEx" ),
arg(Int32,“hFile”),
Arg( Int32, "lpFileSize", 更新 ),
返回( Int32 )
);
fs = 0;
rc = kernel32 << GetFileSizeEx( hFile, fs );
顯示(fs);
// 清理
// http://msdn.microsoft.com/en-us/library/windows/desktop/ms724211(v=vs.85).aspx
kernel32 << DeclareFunction( "CloseHandle", 約定( STDCALL ), Alias( "CloseHandle" ),
arg(Int32,“hFile”),
返回( Int32 )
);
rc = kernel32 << CloseHandle( hFile );
kernel32 << 卸載 DLL();
最好的問候,-馬特
回覆:取得檔案大小如果您安裝了 R,這應該可以工作(僅在 JMP 10 for Mac 中測試):
R初始化() ;
我自己的路=選擇文件() ;
R 執行( {我自己的路} , { X } , “x <- file.info(mypath)$size” ) ;
展示( X ) ;
R 項() ;
回覆:取得檔案大小JMP 11 中提供了 File Size() 函數。
以下是對「JMP 腳本語言的 JSL 配套應用程式」一書第 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_路徑0 =選擇文件() ;
f_路徑=轉換檔案路徑( f_路徑,視窗) ;
// 建構 DOS“dir”指令
cmd_txt = "\[dir /-C /T:C /S "]\"
|| f_路徑
|| “\[” > ]\”
||輸出目錄;
展示( cmd_txt ) ;
// 儲存到副檔名為 .bat 的檔案。Windows 解釋 .bat 文件
// 與Start按鈕上的Run(執行指令)視窗相同
儲存文字文件(蝙蝠菲德, cmd_txt ) ;
// Windows 將這個“開啟”路徑檔案解釋為“運行”
t0 =今天() ;
網路(蝙蝠菲德) ;
等待( 1 ) ;
// 等待 Windows 完成,如果目錄很大,可能需要更長的時間。
// 請注意,等待是您擁有的唯一控制權,然後查看檔案是否存在。
// 顯示結果
// 如果它不存在或比預期早,您可以在此處使用一些“檢查”
如果( !文件已存在(輸出目錄) | (建立日期(輸出目錄) - t0 > 10 ) ,
標題( 「dir 指令出現問題,它沒有運作。 正在流產…”) ;
等待( 4 ) ;
標題(消除) ;
丟() ;
) ;
_crlf = “\!N” ;
目錄結果=字(載入文字文件(輸出目錄) , _crlf ) ;
目錄大小_str =字(目錄結果[尼特姆斯(目錄結果) - 1 ]) ;
f_大小=編號(目錄大小_str [ 3 ]) ;
展示(目錄大小_str , f_大小) ; //位元組數
//================================================ == ===============================
//下面的指令會建立一個文件,顯示所使用的 DOS dir 指令的結果
// 開啟結果文件
目錄_dt =打開(
輸出目錄,
列(姓名( “目錄結果” ) =特點) ,
導入設定(
行結束(回車換行) ,
場結束(回車換行) , // 確保只有 1 個欄
剝離報價( 1 ) ,
使用撇號作為引號( 1 ) ,
掃描整份文件( 1 ) ,
將空列視為數字( 0 ) ,
標籤( 0 ) ,
數據開始( 1 ) ,
要讀的行(全部) ,
年份規則( “10-90” )
)
) ;