안녕 모두,
저는 스크립트 바보이고 간단한 작업을 수행하기 위해 손이 필요합니다. 사용자가 단일 디렉토리를 선택하고, 디렉토리에서 CSV 파일을 찾고, 파일을 단일 JMP 데이터 테이블에 추가 / 연결하는 스크립트가 필요합니다. 지금은 사용자가 스크립트를 실행할 때마다 디렉토리의 CSV 파일로이 "마스터 데이터 테이블"을 다시 빌드하면 문제가 없습니다.
나는 약간의 조사를했고 그 일을 성취해야하는 상주 슈퍼 유저 천재 txnelson으로부터 무언가를 발견했다. 그러나 그것을 실행할 때, 나는 오류를보고 왜 그 이유를 모르겠다. 스크립트 :
Names Default To Here( 1 );
// Setup an empty table to start to concatenate other tables to
dtbase = New Table( "Base Table" );
// Have the user select the starting folder
dirpath = Pick Directory( "Pick the Top Level Directory" );
// Get all of the files in all of the folders that are under the picked folder
TheFileList = Files In Directory( dirpath, "recursive" );
// Go through all of the files and read in append those that meet your
// requirement. You will need to amend the IF statement to meet your criteria
For( i = 1, i <= N Items( TheFileList ), i++,
If( Uppercase( Word( -1, TheFileList, "." ) ) == "CSV" & Is File( dirpath || TheFileList ) == 1,
dt = Open( dirpath || TheFileList );
dtbase = dtbase << concatenate( dt, append to first table( 1 ) );
Close( dt, nosave );
);
);스크립트를 실행하면 디렉토리를 선택할 때까지 실행되고 아무 일도 일어나지 않습니다. 나는 코드를 밟았으며 여기서 에러가 던져진다.
인수는 'Word', 잘못된 인수 (TheFileList), Word / * ### * / (- 1, TheFileList, ".")의 액세스 또는 평가에서 문자 여야합니다.
나는이 전문 용어가 무엇을 의미하는지 이해하지 못한다. 코드가 의미있는 것 같습니다. 왜 작동하지 않을까요?
고마워하고 바보가되어서 미안해.
당신이 그것을 알아 낸 것을 기쁘게 생각합니다. 문제로 인해 유감스럽게 생각하며 설명 할 수 있습니다. 짐 넬슨 (Jim Nelson)이 코드를 게시 한 직후, JMP 커뮤니티는 주요 전환을 거쳤습니다. 네가 만난 문제는 내가 늙어서 아직도 잡으려고하는거야. 블로그 posts : 때로는 변환 프로세스가 게시물에 삽입 된 JSL에서 아래 첨자를 삭제했습니다. (당신이 짐의 포스트에서 더 내려다 보면, 당신은 아래 첨자를 포함하는 누군가 찍은 사진을 볼 수있다 ... 그것은 정말로 몇 달 동안 옳았다!)
@txnelson @ 제프 _ 퍼킨슨
고대 지위
더 많은 연구를하여 문제를 해결했습니다. TheFileList에 할당 된 디렉토리의 파일에서 가져온 여러 파일을 순환하려면 대괄호 안에 작은 "i"가 있어야합니다. 어디서부터 시작해야할지조차 모르겠다 -이 같은 "항목"을 통해 순환 할 수있는 아이디어가 없다면 700 + 페이지 JSL 가이드에서이 기능을 어디에서 찾을 수 있을지조차 알지 못할 것입니다. 스크립팅이 불가능합니다.
If( Uppercase( Word( -1, TheFileList[i], "." ) ) == "CSV" & Is File( dirpath || TheFileList[i] ) == 1,
dt = Open( dirpath || TheFileList[i] );
dtbase = dtbase << concatenate( dt, append to first table( 1 ) );
Close( dt, nosave );
);
);