@mlrpadilla JMP가 파일을 저장할 기회가 없을 때 파일 복구에 대해 질문했습니다.컴퓨터/JMP 종료가 불가피한 경우 JMP 파일에 대한 가장 최근 작업을 어떻게 복구합니까?
1년 전에 .JSL 스크립트로 비슷한 경험을 한 적이 있습니다. 정전으로 인해 몇 시간 동안 일해야 했습니다. 정기적으로 열린 JSL 파일을 찾고 스냅샷을 만들기 위해 추가 기능을 작성했습니다. JMP 데이터 테이블을 스냅샷하지 않습니다. 그리고 그것은 Windows에서만 작동합니다. 그러나 그 이후로 몇 번이나 내 JSL을 저장했습니다. 그것은 또한 적어도 한 번 실패했습니다(아래).
FileSnapper 추가 기능
설치 후 FileSnapper 추가 기능 스크립트는 5분마다(기본값) 실행되고 열려 있는 창에서 수정된 스크립트 창을 찾습니다. 하나를 찾으면 텍스트를 가져와서 저장합니다.
JMP가 정상적으로 닫히지 않으면 센티넬 파일이 남습니다. 다음에 JMP가 시작되고 센티넬을 찾으면 JMP가 FileSnapper 대화 상자를 열어 복원하려는 스냅샷이 있는지 확인할 수 있습니다. 추가 기능 메뉴에서 대화 상자를 열고 몇 가지 속성(예: 5분 간격 및 14일 보존 기간)을 설정할 수도 있습니다.
작동 방식
FileSnapper를 가능한 한 보이지 않게 유지하기 위해 JSL 스케줄러를 사용하지 않습니다. (스케줄러가 창을 열면 다른 용도로 사용할 수 있는 스케줄러가 하나만 있습니다.) 대신 FileSnapper는 RunProgram을 사용하여 주기적인 깨우기 호출을 가져옵니다. 많은 반복이 있었습니다. 현재 버전은 CMD.EXE 및 DOS를 사용하고 있습니다. 기다립니다 루프에서 명령을 사용하여 5분마다 일부 텍스트를 FileSnapper로 다시 보냅니다. JMP가 종료되면 신호를 보냅니다. 기다립니다 CMD.EXE를 빠르게 종료하는 이벤트입니다. 센티넬이 사라지면 CMD.EXE도 종료됩니다.
센티넬 파일에는 작은 JMP 데이터 테이블이 사용됩니다. 테이블은 저장되지만 개인 테이블로도 열린 상태로 유지됩니다. JMP의 두 번째 복사본이 실행되면 테이블이 JMP의 다른 복사본에 열려 있음을 감지하고 (1) 복구 대화 상자를 열지 않고 (2) 다른 센티넬 파일을 만듭니다. 열려 있지 않은 센티넬이 발견되면 열려 있지 않은 모든 센티넬이 제거되고 복구 대화 상자가 열립니다. 파일 복구에 대한 메시지는 한 번만 표시되어야 합니다.
추가 기능은 종료 후크를 사용하여 센티넬을 제거하고 RunProgram이 종료되도록 여러 작업을 수행합니다. 몇 가지 진단 show() 호출이 남아 있을 수 있지만 JMP가 종료되고 있기 때문에 일반적으로 출력을 볼 수 없습니다. 보기-> 추가 기능을 사용하여 FileSnapper를 활성화/비활성화하고 로그 창에서 볼 수 있습니다.
backup() 함수는 5분마다 RunProgram에서 호출됩니다. Backup()은 더티(수정)된 편집기 창을 찾아 내용을 마지막 시간과 비교하고 변경된 경우 복사본을 저장합니다. 스냅샷에 대한 문서 아래에 특수 폴더가 생성됩니다. 파일은 읽기 전용으로 표시되어 있으므로 사용하지 않도록 돕습니다.
FileSnapper가 시작될 때마다 이전 스냅샷 파일을 조사합니다. FileSnapper는 오래된 스냅샷을 조용히 삭제합니다. 로그가 얼마나 시끄러운지 제어할 수 있지만 FileSnapper가 만드는 모든 스냅샷을 기록하도록 하고 싶지는 않습니다. 키 입력을 5분마다 2개씩 잃어버릴 수 있고 더 많은 로그 활동으로 인해 상황이 악화될 수 있기 때문입니다.
대화 상자 창(실패 후 또는 메뉴에서)에는 가장 최근부터 가장 오래된 스냅샷 목록이 표시됩니다. (1) 두 번 클릭하여 열거나 (2) 한 번 클릭하여 선택할 수 있습니다. 하나의 파일을 선택하면 선택한 파일을 마우스 오른쪽 버튼으로 클릭하고(오른쪽 클릭은 선택하지 않아도 됩니다!) 기존 파일과 비교할 수 있습니다. 두 개의 파일을 선택하면 마우스 오른쪽 버튼을 클릭하여 두 파일을 비교할 수 있습니다. 파일이 동일한지 빠르게 확인하려면 비교 창의 제목을 확인하세요. 기존 파일과 비교하라는 메시지가 표시되지 않습니다. 레지스트리와 일부 식별된 디렉토리에서 올바른 이름의 파일을 찾습니다. 비교할 파일일 수도 있고 아닐 수도 있습니다.
그러나 나는 여전히 일을 잃었다.
스크립트를 개발할 때 스크립트를 중지하기 위해 종종 Esc 키를 누릅니다. FileSnapper는 스크립트입니다. 때때로 이스케이프 키를 처리하고 잘못된 시간에 중지되고 5분 후에 다시 실행되지 않도록 방지할 방법이 없는 것 같습니다. FileSnapper에는 중단되었다는 보고가 있지만 5분 후에 데이터 테이블이 열리는 경우에만 가능합니다. 제 경우에는 스크립트를 작성할 때 데이터 테이블을 자주 사용하지 않기 때문에 알림을 받지 못할 수도 있습니다.
어느 시점에서 저는 보존을 100일로 설정하고 스냅샷 빈도를 30초로 설정했습니다. 이건 너무해요. 10,000개가 넘는 파일이 있었고 JMP를 시작하는 데 30초가 걸릴 수 있습니다. 대화 상자의 옵션에서 고통 수준을 선택하십시오. 저장 버튼을 누른 다음 대화 상자를 닫습니다.
나는 이것이 JMP에 내장되기를 원하고 더 나은 콜백 타이머를 원합니다. 많은 개선 사항이 있습니다(대화 상자의 저장 버튼은 피드백을 제공하지 않음). 실제로 누군가에게 도움이 될 수도 있고 그렇지 않을 수도 있습니다. 가끔 놓친 키 입력이 지겹다면 제거할 수 있습니다. 동일한 보기->추가 기능 메뉴에서도 소스를 볼 수 있습니다. 덕분에 @Justin_Chilton 프로젝트에서 JSL 창이 어떻게 작동하는지 지적하기 위해.
추가 기능.