<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />365개의 .csv 파일이 있는 폴더가 있습니다. 각 .csv 파일을 .jmp 파일로 변환하고 .jmp 파일에서 일부 열을 삭제한 다음 .csv 파일 이름으로 .jmp 파일을 저장하고 JMP를 종료하고 싶습니다. 이 모든 작업은 JSL 스크립트를 사용하여 자동으로 수행되어야 합니다.
JSL 스크립트를 시작하고 하나의 .csv 파일을 JSL 스크립트에 전달하는 배치 스크립트가 이미 있습니다. 그런 다음 JSL 스크립트는 .csv 파일을 열고 삭제하려는 열을 삭제합니다.
배치 스크립트가 다음 .csv 파일로 시작하여 JSL-Script로 열 수 있도록 .jmp 파일을 저장하고 JSL-Script로 JMP를 종료하는 데 문제가 있습니다.
.jmp 파일이 저장되지 않아 JMP가 종료되지 않습니다. 따라서 배치 스크립트가 JMP가 닫힐 때까지 기다리기 때문에 전체 배치 프로세스가 중지됩니다.
이 토론 하단에 있는 "twaintwist" 사용자의 응답에 따라 .csv 파일을 엽니다. JSL 스크립트에 매개변수 전달
내 모든 .csv 파일 + 배치 스크립트 + .jsl 스크립트는 동일한 폴더에 있습니다.
이 솔루션은 제게는 잘 작동하므로 배치 스크립트는 다음과 같습니다.
(*.csv)의 %%f에 대해 do (
echo fileName = "%%~nf.csv";>file.txt
복사 /y /b file.txt+myScript.jsl temp.jsl
JMP 임시.jsl
시간 초과 / t 5
델 %%~nf.csv
시간 초과 / t 5
델파일.txt
시간 초과 / t 5
델 임시.jsl
)
정지시키다
그런 다음 내 JSL 스크립트는 .bat 스크립트가 전달한 .csv 파일을 열고 일부 열을 삭제합니다. 하지만 cloumns를 삭제한 후에는 JSL 스크립트가 중지되는 것 같습니다.
.jmp 파일이 저장되지 않고 JMP가 종료되지 않습니다. 스크립트에서 볼 수 있듯이 JSL을 사용하여 창을 저장하고 닫는 다양한 방법을 시도했습니다.
여기 내 JSL 스크립트가 있습니다.
doc = 열기(파일명);
dt = 현재 데이터 테이블();
// 데이터 테이블을 빠르게 업데이트할 수 있도록 디스플레이 업데이트를 끕니다.
dt << 데이터 업데이트 시작;
콜리스트 = {
//#삭제할 열#
};
dt << 열 삭제(ColList);
dt << 데이터 업데이트 종료;
nameLength = 길이(파일명);
fielName = Left(fileName, nameLength - 3);
이름 = 파일 이름 || "jmp";
dt<
doc<
잠깐(10);
닫기(dt, nosave);
닫기(문서, NoSave);
//doc << 창 닫기;
//dt<<창 닫기();
//모두 닫기(데이터 테이블, save(fileName+"jmp"));
종료(nosave);
종료(nosave);
.bat 파일을 예약할 수 있는 것처럼 JSL 스크립트를 예약할 수 있습니다.
을 추가하다 '//!' 스크립트의 첫 번째 줄에 추가하거나 .jsl을 .rpt로 변경하면 열 때 자동으로 실행됩니다.그런 다음 Windows 스케줄러가 배치 파일 대신 JMP 스크립트를 가리키도록 하세요.
그냥 말하는 거야.
안타깝게도 이 프로세스는 더 큰 시스템에 속하며 Windows 스케줄러를 사용하여 일정을 예약할 수 있어야 하므로 어쨌든 .BAT가 필요하지만 JSL에서만 수행할 수 있다는 점을 상기시켜 주셔서 감사합니다.
좋습니다. 작동하게 되어 다행입니다.
.BAT 파일 없이 JSL에서 이 모든 작업을 수행할 수도 있습니다.이는 전체 프로세스를 단순화할 수도 있고 그렇지 않을 수도 있습니다.JSL에는 파일 이름을 만들고 유효성을 검사할 수 있는 FilesInDirectory 함수와 강력한 문자열 조작 함수가 있습니다.대기 및 시간 초과, 반복적인 JMP 시작/중지 때문에 현재 솔루션이 너무 느린 경우 .BAT 파일을 제거하는 것이 좋습니다.
매우 감사합니다! 귀하의 솔루션이 내 문제를 해결했습니다 ...
JSL의 완전 초보자로서 나는 로그와 같은 것이 있다는 것을 몰랐습니다.
로그를 확인하면서 열 이름 중 하나를 잘못 입력하여 기능이 중지되었기 때문에 열 삭제 기능이 생각만큼 제대로 작동하지 않는다는 것을 알았습니다.
그럼에도 불구하고 dt와 doc를 닫는 것도 잘못되었지만 결국에는 그다지 큰 문제는 아니었습니다.
다시 한번 귀하의 도움에 감사드립니다!
JSL 로그에서 메시지를 확인하세요.dt 및 doc를 닫는 것이 문제일 수 있습니다. 같은 테이블이야?