파일 크기 가져오기<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);
파일을 열거나 로드하지 않고 파일 크기를 확인하는 방법이 있습니까?
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 보내기(f이름);
R 제출("\[
df = 파일.정보(f이름);
]\");
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 )
);
open_existing = 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 언로드();
감사합니다. -맷
Re: 파일 크기를 알아보세요R이 설치되어 있으면 작동합니다(Mac용 JMP 10에서만 테스트됨).
R 초기화 () ;
내 경로 = 파일 선택 () ;
R 실행 ( { 내 경로 } , { 엑스 } , "x <- file.info(mypath)$size" ) ;
보여주다 ( 엑스 ) ;
R 항 () ;
Re: 파일 크기를 알아보세요File Size() 함수는 JMP 11에서 사용할 수 있습니다.
다음은 "JMP 스크립팅 언어의 JSL Companion Application" 책 2장의 "2_Extra_MSDirUsingWeb.jsl" 스크립트 일부를 수정한 것입니다.Windows에서만 작동하는 kludged 솔루션입니다.참고로 스크립트는 약간 장황하며 기능과 출력을 보여주는 추가 명령이 있습니다.전체 스크립트는 MS DOS dir 명령의 구문을 설명합니다.
================================================= ================================================= ======
// cmd_dir은 JMP 샘플 데이터 목록을 가져오는 명령입니다.
// c:\temp\jmpDir.bat는 실행할 명령 파일입니다.
// c:\temp\dirOut.txt는 dir 명령의 결과 파일입니다.
batFid = "c:\temp\jmpDir.bat" ;
outDir = "c:\temp\dirOut.txt" ;
// 파일의 전체 경로를 가져옵니다.
f_path0 = 파일 선택 () ;
f_경로 = 파일 경로 변환 ( f_경로 , 윈도우 ) ;
// DOS "dir" 명령 빌드
cmd_txt = "\[dir /-C /T:C /S "]\"
|| f_경로
|| "\[" > ]\"
|| outDir ;
보여주다 ( cmd_txt ) ;
// 확장자가 .bat인 파일에 저장합니다.Windows는 .bat 파일을 해석합니다.
// 시작버튼의 실행(명령 실행) 창과 동일
텍스트 파일 저장 ( batFid , cmd_txt ) ;
// Windows는 이 "열린" 경로 파일을 "실행"으로 해석합니다.
t0 = 오늘 () ;
편물 ( batFid ) ;
기다리다 ( 1 ) ;
// Windows가 완료될 때까지 잠시 기다립니다. 디렉토리가 크다면 그 이상 걸릴 수도 있습니다.
// 대기는 당신이 가지고 있는 유일한 제어라는 점에 유의하고 파일이 존재하는지 확인합니다.
// 결과 보여줘
// 존재하지 않거나 예상보다 오래된 경우 여기에 사용할 수 있는 몇 가지 "검사"
만약에 ( ! 파일이 존재 ( outDir ) | ( 생산 일 ( outDir ) - t0 > 10 ) ,
표제 ( "dir 명령에 문제가 있어 실행되지 않았습니다. 중단하는 중...") ;
기다리다 ( 4 ) ;
표제 ( 제거하다 ) ;
던지다 () ;
) ;
_crlf = "\!N" ;
dir_results = 단어 ( 텍스트 파일 로드 ( outDir ) , _crlf ) ;
dir_size_str = 단어 ( dir_results [ 항목 ( dir_results ) - 1 ]) ;
f_크기 = 숫자 ( dir_size_str [ 삼 ]) ;
보여주다 ( dir_size_str , f_크기 ) ; //바이트 수
//================================================ =============================
//아래 명령은 사용된 DOS dir 명령의 결과를 보여주는 파일을 생성합니다.
// 결과 파일을 엽니다.
dir_dt = 열려 있는 (
outDir ,
기둥 ( 이름 ( "Dir 결과" ) = 성격 ) ,
가져오기 설정 (
라인 끝 ( CRLF ) ,
필드 끝 ( CRLF ) , // 1개의 열만 보장
스트립 따옴표 ( 1 ) ,
아포스트로피를 따옴표로 사용 ( 1 ) ,
전체 파일 스캔 ( 1 ) ,
빈 열을 숫자로 처리 ( 0 ) ,
라벨 ( 0 ) ,
데이터 시작 ( 1 ) ,
읽을 줄 ( 모두 ) ,
연도 규칙 ( "10-90" )
)
) ;