폴더 내 파일 중 특정 단어(ex: '다시보기')가 포함된 비디오(ex: '.mp4') 파일을 목록(텍스트 Editor)에 추가하는 샘플 코드입니다.

// 목록 내 모든 파일을 제거한다.
clearAllFiles();

var count = 0;
// 목록에 폴더 내 파일이나 파일을 추가한다.
var files = getFiles("e:\\temp\\movies");
var paths = JSON.parse(files);

for (var index = 0; index < paths.length; ++index)
{
    var path = paths[index];
    //  파일 경로에서 [0]경로 [1]이름 [2]확장명을 분리한다.
    var array = splitPath(path);

    if (-1 != array[1].indexOf("다시보기") && ".mp4" == array[2])
    {
        count += addFiles(path);
    }
}
if (0 == count) {
    alert("추가된 파일이 없습니다.");
}
else {
    alert(count + "개의 파일이 추가됐습니다.");
}

 

지정된 폴더에서 파일을 검색 후 특정 단어가 포함된 비디오(.mp4) 파일을 찾고 프로그램(ffmpeg.exe)을 실행하여 스트림을 재 조립하는 샘플 코드입니다.

* V0.7.0 이상 지원

var files = getFiles("e:\\temp\\테스트");
var paths = JSON.parse(files);

clearConsole();
showConsole(true);

for (index = 0; index < paths.length; ++index)
{
    var path = paths[index];

    //  전체 경로에서 디렉터리 경로를 찾는다.
    var slash = path.lastIndexOf("\\");
    //  파일명을 얻는다.
    var fileName = path.substring(1 + slash);

    //  파일명에서 확장명을 찾는다.
    var dot = fileName.lastIndexOf(".");
    if (-1 == dot) {
        continue;
    }

    //  파일명에서 이름과 확장명을 얻는다.
    var extension = fileName.substring(dot);
    fileName = fileName.substring(0, dot);

    if (-1 != fileName.indexOf("다시보기") && ".mp4" == extension)
    {
        //  ffmpeg.exe를 실행하여 스트림을 다시 조립한다.
        var processId = createProcess("e:\\temp\\movies\\ffmpeg.exe", "-i \"" + path + "\" -vcodec copy -acodec copy \"" + path.substring(0, 1 + slash) + fileName.replace("다시보기", "").trim() + extension + "\"");

        var result = waitForExit(processId, 0/*무한대기*/);

        if (0/*성공*/ == result)
        {
            //  원본 파일을 삭제한다.
            deleteFile(path);
        }
        else
        {
            console("[0x" + result.toString(16) + "] 변환 실패: " + path);
        }
    }
}

alert("변환이 완료됐습니다.");

V 0.7.0.25

 

  ⦁ [추가] (스크립트) 파일 및 프로세스 관련 함수 추가
      - splitPath: 파일 경로 분리 ⇒ [0]디렉터리 경로 [1]이름 [2]확장명('.'포함)
      - getFiles: 디렉터리 파일 검색
      - existFile: 파일 유무 검색
      - deleteFile: 파일 삭제 *취소 불가
      - moveFile: 파일 이동
      - createProcess: 프로그램 실행 *스크립트 종료 시 실행 중인 프로그램 강제 종료됨
      - waitForExit: 프로그램 종료 대기
      - kill: 프로그램 강제 종료
      - killAll: 모든 프로그램 강제 종료
      - getLastError: 마지막 에러 조회

  ⦁ [추가] (스크립트) 스크립트 편집 윈도우
      - Tab [스크립트] 헤더 더블 클릭 시 팝업
      - 윈도우 닫으면 Tab [스크립트] 페이지 다시 추가

  ⦁ [추가] (옵션) 파일 추가 시 필터링 ⇒ 폴더 및 파일 브라우저 메뉴, 옵션 윈도우

  ⦁ [추가] CSV(탭으로 분리) 파일 가져오기 / 내보내기(UTF-8 / Ansi)
  ⦁ [추가] [블로그] 버튼 블로그 업데이트 알림(아이콘) 출력
  ⦁ [개선] 특수 문자 / 클립보드 / 속성 태그 삽입 로직 재 구현
      - 기존: 텍스트 선택 상태를 무시하고 현재 캐럿 위치에 텍스트 삽입
      + 변경
          - 선택 없음: 현재 캐럿 위치에 텍스트 삽입
          - 블록 선택: 첫 텍스트 삽입 때 선택한 텍스트 겹쳐쓰고 다음 삽입부터는 텍스트 추가
          - 영역 선택: (블록 선택)과 동작은 동일하고 2라인 이상일 때 서로 다른 위치에 텍스트 추가

  ⦁ [개선] (스크립트) 라인 번호 출력 마진 최적화
  ⦁ [개선] (스크립트) 실행 중 파일 추가, 파일명 수정 불가 ⇒ 관련 GUI 모두 비활성화
      - 탐색기 [보내기] 메뉴, 파일 Drag & Drop
      - Editor 문자 입력, 클립보드 붙여넣기
  ⦁ [개선] (스크립트) 실행 중 윈도우 숨길 때 트레이 아이콘 툴팁에 '스크립트 실행 중' 출력
  ⦁ [개선] (스크립트) 실행 중 응용 프로그램 종료 불가 ⇒ 안내 메시지 출력
  ⦁ [개선] (찾기/바꾸기) 모두 / 바꾸기 로직 재 구현
  ⦁ [개선] (찾기/바꾸기) 모두 / 제거 로직 재 구현

  ⦁ [개선] (프로그램정보) 윈도우 크기 조절 가능
  ⦁ [개선] 선택한 텍스트 범위 자동 찾기 설정 로직 재 구현

  ⦁ [변경] 윈도우 [숨기기] 메뉴 위치 변경 ⇒ [파일] > [보기]
  ⦁ [변경] Editor 팝업 메뉴 [에디터] > [보기] 이름 변경
  ⦁ [변경] (스크립트) 콘솔 윈도우 내 팝업 메뉴 (기본 → 커스텀)
  ⦁ [버그] (스크립트) addFiles() 호출 시 [파일 추가] 윈도우 팝업
  ⦁ [버그] (스크립트) 실행 중 응용 프로그램 종료 시 정상 종료 안됨 ⇒ 스크립트 실행 중 종료 불가

 

'EasyRenamer > 업데이트' 카테고리의 다른 글

[업데이트] V 0.7.2  (0) 2022.12.18
[업데이트] V 0.7.1  (0) 2022.12.17
[업데이트] V 0.6.5  (0) 2022.12.10
[업데이트] V 0.6.4  (0) 2022.12.08
[업데이트] V 0.6.3  (0) 2022.12.07

지정된 폴더에서 파일을 검색 후 특정 단어가 포함된 비디오(.mp4) 파일을 찾고 프로그램(ffmpeg.exe)을 다중 실행하여 스트림을 재 조립하는 샘플 코드입니다.

* V0.7.0 이상 지원

*실행하는 프로그램의 최대 개수 제한 필요

var message = "";
var succeeded = 0, failed = 0;
var processes = {};
var files = getFiles("e:\\temp\\테스트");
var paths = JSON.parse(files);

for (index = 0; index < paths.length; ++index)
{
    var path = paths[index];

    //  전체 경로에서 디렉터리 경로를 찾는다.
    var slash = path.lastIndexOf("\\");
    //  파일명을 얻는다.
    var fileName = path.substring(1 + slash);

    //  파일명에서 확장명을 찾는다.
    var dot = fileName.lastIndexOf(".");
    if (-1 == dot) {
        continue;
    }

    //  파일명에서 이름과 확장명을 얻는다.
    var extension = fileName.substring(dot);
    fileName = fileName.substring(0, dot);

    if (-1 != fileName.indexOf("다시보기") && ".mp4" == extension)
    {
        //  ffmpeg.exe를 실행하여 스트림을 다시 조립한다.
        var processId = createProcess("e:\\temp\\movies\\ffmpeg.exe", "-i \"" + path + "\" -vcodec copy -acodec copy \"" + path.substring(0, 1 + slash) + fileName.replace("다시보기", "").trim() + extension + "\"");

        if (-1/*실행*/ == processId) {
            ++failed;
            message += getLastError() + "\n";
        }
        else {
            processes[processId] = path;
        }
    }
}

for (var processId in processes)
{
    var result = waitForExit(processId, 0/*무한대기*/);

    if (0/*성공*/ == result)
    {
        ++succeeded;
        //  원본 파일을 삭제한다.
        deleteFile(processes[processId]);
    }
    else
    {
        ++failed;
        message += "[0x" + result.toString(16) + "] " + processes[processId] + "\n";
    }
}
if (0 == failed) {
    message = "모든 작업이 완료됐습니다.";
} else if (0 < succeeded) {
    message = "일부 작업이 실패했습니다.\n\n" + message;
} else {
    message = "모든 작업이 실패했습니다.\n\n" + message;
}
alert(message);

안녕하세요.

쉽고 편리한 파일명 편집(일괄 변경) 소프트웨어 EasyRenamer 의 사용 방법을 설명합니다.

 

이번에 설명할 내용은 EasyRenamer 와 다른 소프트웨어와의 차별점인 텍스트 Editor에 대한 설명입니다.

 

1. Editor의 라인과 파일은 1:1의 관계

  - 일반적인 텍스트 Editor는 개행 문자 편집이 자유롭지만 EasyRenamer는 통제합니다.

  - 개행 문자 제거는 파일이 목록에서 제거될 수 있는 경우에만 허용합니다.

  - 목록 내 이름이 없는 빈 라인은 Back 또는 Del 키로 파일 정보와 함께 제거됩니다.

  - 라인이 비어있지 않으면 이름 앞에서의 Back 키와 이름 뒤에서의 Del 키는 차단됩니다.

  - 목록에서 파일을 제거하려면 해당 라인의 텍스트를 모두 선택하고 Back 또는 Del 키를 입력하거나 Editor 우측 툴바의 제거 버튼을 클릭합니다. *블록 선택은 파일 제거 지원 안함

  - Enter 키 입력도 차단되고 아래 라인을 선택합니다. 마지막이면 첫 라인을 선택합니다.

2. 파일명에 사용할 수 없는 문자 입력 차단

  - 속성 태그 입력을 위한 기호(< : >)를 제외하고 파일명에 사용할 수 없는 문자 입력은 차단됩니다.

  - EasyRenamer 윈도우 내 모든 문자 입력 컨트롤도 사용할 수 없는 문자 입력은 차단됩니다.

  - 사용할 수 없는 문자 : | \ " : ? / *

 

3. 텍스트 블록 선택 및 활용

  - 파일을 목록에 추가 후 Alt 키를 누르고 선택하려는 텍스트 위에서 마우스 L 버튼 클릭 후 Drag 합니다.

  - 블록 선택 후 텍스트를 제거하거나 문자를 입력할 수 있습니다.

4. 텍스트 복사 & 붙여넣기

  - 단축키를 통해 클립보드의 텍스트를 Editor로 붙여넣을 수 있습니다.

  - 붙여넣는 텍스트가 다중 행일 때는 붙여넣는 라인의 위치에 따라 일부 텍스트는 취소됩니다.

  - 붙여넣는 텍스트 중 파일명에 사용할 수 없는 문자는 제거됩니다.

5. 텍스트 찾기

  - 텍스트 찾기는 일반과 범위로 구분됩니다.

  - 텍스트 범위 찾기는 시작 ~ 끝 단어가 포함되는 텍스트를 찾을 수 있습니다.

  - Editor 에서 범위로 찾을 문장을 선택하고 팝업 메뉴 [찾기]를 실행하면 구분자(공백 . | +)로 단어를 분리한 후 시작 및 끝 단어로 입력됩니다.

  - Editor 내 선택한 텍스트를 찾기 도구로 끌어다 놓을 수 있습니다.

6. 텍스트 찾은 후 바꾸기 / 제거

  - 일반 또는 범위로 찾은 텍스트를 지정된 텍스트로 바꾸거나 제거할 수 있습니다.

  - 텍스트 제거는 선택된 영역 또는 모든 파일명에서 1개씩 또는 모두 제거할 수 있습니다.

  - 텍스트를 모두 바꾸거나 제거하면 해당 위치에 모두 캐럿이 출력되고 문자를 입력하거나 제거할 수 있습니다.

7. 파일 시스템 모니터링

  - EasyRenamer 는 목록에 추가된 파일의 상태(생성, 삭제, 이름 변경, 크기 변경)를 모니터링 합니다.

  - 목록의 파일이 외부(ex: 탐색기)에서 삭제되면 주석으로 메시지가 출력됩니다.

  - 삭제된 파일이 외부에서 복원되면 경고 메시지가 삭제됩니다.

  - 파일의 이름이 외부에서 변경되고 Editor 내 이름이 원본과 같다면 이름이 변경됩니다.

  - 이미 이름이 수정된 경우는 외부에서 이름이 변경되도 Editor 내 이름이 변경되지 않습니다.

8. 특수 문자 삽입

  - Tab [특수문자] 페이지를 통해 파일명 내 특수 문자를 삽입할 수 있습니다.

  - 선택 방식(선택 안함 / 일반 선택 / 블록 선택)에 따라 특수 문자를 다중 삽입할 수 있습니다.

9. 클립보드 추가

  - Tab [클립보드] 페이지를 통해 파일명 내 캡처된 클립보드 텍스트를 삽입할 수 있습니다.

 

10. 속성 태그 추가

  - Tab [속성 태그] 페이지를 통해 파일명 내 속성 태그(<~>)를 삽입할 수 있습니다.

 

+ Recent posts