NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    스크립트 매크로를 이용해서 폴더에 들어있는 파일명을 규칙에 맞게 모두 바꾸는 방법. (How to change all file name…

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 유틸리티에 파일명을 쉽게 바꿀 수 있는 유틸리티가 포함되어 있는데요. 이 기능보다 더 파워풀하게 작업하려면 매크로를 이용해야 합니다. 변수로 원하는데로 처리가 가능하기 때문이죠. 우선, 바탕화면의 폴더(before)에 예제로 사용할 이미지 파일들을 모아둡니다. 저는 아래와 같이 넣어두었습니다. 그리고, 파일을 복사하거나 이동할 after 폴더도 하나 생성하세요.

    LRdXcv5.png

     

     

    에디터를 실행하고, 스크립트를 추가(Ctrl+N)하세요.

    TVTiuhm.png

     

     

    변수를 3개 추가하세요. 각각의 변수는 아래와 같은 데이터를 저장하기 위한 용도로 사용됩니다.

    • 파일목록: 사용자가 설정한 폴더 안에 파일 목록을 배열로 저장
    • 파일명: Foreach 반복 액션에서 배열에 저장된 파일명 저장
    • 반복횟수: 반복하면서 파일을 복사 또는 이동할 때 이름에 인덱스를 붙이기 위한 반복 횟수 값

    xfZevMy.png

     

     

    [ 파일 목록 ] 액션에서 복사하거나 이동할 원본 파일이 들어있는 폴더를 선택해줍니다.

    PlIGr2P.png

     

     

    이 액션이 실행되면 사용자가 선택한 폴더(before)의 루트에 있는 모든 이미지를 배열로 가져옵니다. 하지만, 액션이 가지고 있는 정보는 해당 액션이 완료되고 다음 액션으로 넘어가면 메모리에서 삭제됩니다. 그렇기에 다른 액션에서 이 값(파일 목록)을 사용하려면 변수에 저장해야 합니다. [ 변수 ]에 저장하기 위해 파일 목록 액션의 속성에서 추가하기를 클릭하세요. VariableItem 컬렉션 편집기 창에서 좌측 하단에 "추가"를 클릭하세요. 그리고 변수 이름과 데이터를 목록에서 선택해줍니다.

    e5af919.png

     

     

    여기까지 파일 목록 액션에서 가져온 파일 목록을 변수에 추가하는 방법을 알아봤습니다. [ Foreach 반복 ] 액션의 체크를 끄고 실행(Ctrl+Alt+F8)해보세요. 그리고, 파일 목록 속성의 컬렉션을 눌러보면 가져온 파일들의 목록을 확인할 수 있습니다.

    MGngwun.gif

     

     

    Foreach 반복 액션은 하위로 추가한 액션들을 반복할 수 있도록 해줍니다. 엑셀이나 텍스트 문서의 값을 순차적으로 읽어와서 처리할 수 있죠. 파일 목록도 배열이기 때문에 Foreach 반복 액션으로 쉽게 순차적으로 조건을 주고 처리할 수 있습니다. 상당히 막강한 기능을 가진 액션이지만~ 그리 활용도가 높지는 않습니다. 업무용으로 사용하기에 적합하지만 배열이라는 용어나 프로그래밍의 구조적인 내용을 포함하고 있기에 개발자가 아닌 일반인이 이해하기에는 다소 어려운 부분이 있기 때문입니다.  앞서 파일 목록을 변수에 저장했었는데요. 이 배열을 Foreach 반복 액션으로 가져와야 합니다. 그래야 배열의 항목 수 만큼 반복하기 때문입니다.

    2doun3I.gif

     

     

    파일 목록 배열의 길이(항목 수)만큼 파일을 처리하기 위해 읽어온 값을 "파일명" 변수에 저장해줘야 합니다. 그래야, 아래에 있는 목록의 값을 처리할 수 있기 때문입니다. 추가로 반복된 횟수도 변수에 저장하세요. 이 변수의 값은 아래에 추가된 [ 파일 이동 ]에서 파일명을 만들때 순차적으로 번호를 붙여줄 때 사용합니다.

    jSK3xFr.gif

     

     

    이 예제는 첨부 파일로 추가되어 있으니 지금 이해가 가지 않더라도 포기하지 마세요. 이 예제를 반복해서 학습하고 반복기와 변수에 대해 이해하면 정말 퍼포먼스가 뛰어난(?) 매크로를 제작할 수 있게됩니다. 매크로의 기본(마우스, 키보드, 이미지 서치)만 알아도 매크로를 만드는데 어려움은 없지만, 복잡한 업무 로직을 처리하려면 반복기와 변수에 대해 반드시 이해하고 넘어가야 합니다. 여기 까지의 로직을 말로 풀어서 설명하면, 사용자가 설정한 폴더의 파일 목록을 가져와서 변수에 저장해둡니다. 저장된 파일 목록은 반복기(Foreach 반복)에서 자동으로 순차적으로 읽혀집니다. 아래 처럼요.

    %경로%NGM_20210517210116802_0001.gif
    %경로%NGM_20210517210116802_0002.gif
    %경로%NGM_20210517210116802_0003.gif
    ...

     

    순차적으로 읽혀지는 파일명을 변수에 저장하고, 하위에 추가된 [ 파일 이동 ] 액션에서 변수에 저장된 파일명과 반복 횟수를 가져와서 하나씩 처리합니다. 이제 마지막으로 파일 이동 액션의 속성이 어떻게 설정되어 있는지 확인 해봅시다. 변경된(굵은 글씨) 속성이 많아서 복잡해 보일수도 있으나 하나씩 천천히 알아보도록 하겠습니다.

    v7tbY1v.png

     

     

    각각의 속성을 알아보기 전에 변수로부터 필요한 값들을 가져옵니다. 아래 그림을 참고해서 추가 해보세요.

    Yrrvnvp.png

     

     

    속성창의 작업 카테고리에 1부터 시작이 True로 설정되어 있습니다. 일반적으로 대부분의 프로그래밍 언어는 인덱스가 0부터 시작합니다. 엑셀은 이상하게도 1부터 시작하지만요^^; 아무튼, 파일명을 만들 때 파일명 뒤에 숫자를 붙여줄 수 있는데요. 숫자를 붙일 때 0부터 시작하지 않고, 1부터 시작하길 원하면 이 속성을 True로 설정해야 합니다. 그리고, 날짜 추가에 "yyyyMMddHHmmssfff"가 입력되어 있죠? 파일명에 숫자로 인덱싱을 할수도 있지만, 날짜 시간을 붙여줄수도 있습니다. 딱보면 대략 어떤 의미인지 감이 오실텐데요. yyyy는 연도를 나타냅니다. 현재 연도와 자동으로 치환됩니다. 아래와 같은 규칙을 따르죠.

    형식 지정자 설명 예제
    "d" 1부터 31까지의 일(월 기준)입니다.
    추가 정보: "d" 사용자 지정 형식 지정자.
    2009-06-01T13:45:30 -> 1
    2009-06-15T13:45:30 -> 15
    "dd" 01부터 31까지의 일(월 기준)입니다.
    추가 정보: “dd” 사용자 지정 형식 지정자.
    2009-06-01T13:45:30 -> 01
    2009-06-15T13:45:30 -> 15
    "ddd" 요일의 약식 이름입니다.
    추가 정보: “ddd” 사용자 지정 형식 지정자.
    2009-06-15T13:45:30 -> Mon (en-US)
    2009-06-15T13:45:30 -> Пн (ru-RU)
    2009-06-15T13:45:30 -> lun. (fr-FR)
    "dddd" 요일의 전체 이름입니다.
    추가 정보: “dddd” 사용자 지정 형식 지정자.
    2009-06-15T13:45:30 -> Monday (en-US)
    2009-06-15T13:45:30 -> понедельник (ru-RU)
    2009-06-15T13:45:30 -> lundi (fr-FR)
    "f" 날짜 및 시간 값에서 1/10초입니다.
    추가 정보: "f" 사용자 지정 형식 지정자.
    2009-06-15T13:45:30.6170000 -> 6
    2009-06-15T13:45:30.05 -> 0
    "ff" 날짜 및 시간 값의 1/100초입니다.
    추가 정보: "ff" 사용자 지정 형식 지정자.
    2009-06-15T13:45:30.6170000 -> 61
    2009-06-15T13:45:30.0050000 -> 00
    "fff" 날짜 및 시간 값의 1/1000초입니다.
    추가 정보: "fff" 사용자 지정 형식 지정자.
    6/15/2009 13:45:30.617 -> 617
    6/15/2009 13:45:30.0005 -> 000
    "ffff" 날짜 및 시간 값의 1/10000초입니다.
    추가 정보: "ffff" 사용자 지정 형식 지정자.
    2009-06-15T13:45:30.6175000 -> 6175
    2009-06-15T13:45:30.0000500 -> 0000
    "fffff" 날짜 및 시간 값의 1/100000초입니다.
    추가 정보: "fffff" 사용자 지정 형식 지정자.
    2009-06-15T13:45:30.6175400 -> 61754
    6/15/2009 13:45:30.000005 -> 00000
    "ffffff" 날짜 및 시간 값의 1/1000000초입니다.
    추가 정보: "ffffff" 사용자 지정 형식 지정자.
    2009-06-15T13:45:30.6175420 -> 617542
    2009-06-15T13:45:30.0000005 -> 000000
    "fffffff" 날짜 및 시간 값의 1/10000000초입니다.
    추가 정보: "fffffff" 사용자 지정 형식 지정자.
    2009-06-15T13:45:30.6175425 -> 6175425
    2009-06-15T13:45:30.0001150 -> 0001150
    "F" 0이 아닌 경우 날짜 및 시간 값의 1/10초입니다.
    추가 정보: "F" 사용자 지정 형식 지정자.
    2009-06-15T13:45:30.6170000 -> 6
    2009-06-15T13:45:30.0500000 -> (출력 없음)
    "FF" 0이 아닌 경우 날짜 및 시간 값의 1/100초입니다.
    추가 정보: "FF" 사용자 지정 형식 지정자.
    2009-06-15T13:45:30.6170000 -> 61
    2009-06-15T13:45:30.0050000 -> (출력 없음)
    "FFF" 0이 아닌 경우 날짜 및 시간 값의 1/1000초입니다.
    추가 정보: “FFF” 사용자 지정 형식 지정자.
    2009-06-15T13:45:30.6170000 -> 617
    2009-06-15T13:45:30.0005000 -> (출력 없음)
    "FFFF" 0이 아닌 경우 날짜 및 시간 값의 1/10000초입니다.
    추가 정보: "FFFF" 사용자 지정 형식 지정자.
    2009-06-15T13:45:30.5275000 -> 5275
    2009-06-15T13:45:30.0000500 -> (출력 없음)
    "FFFFF" 0이 아닌 경우 날짜 및 시간 값의 1/100000초입니다.
    추가 정보: "FFFFF" 사용자 지정 형식 지정자.
    2009-06-15T13:45:30.6175400 -> 61754
    2009-06-15T13:45:30.0000050 -> (출력 없음)
    "FFFFFF" 0이 아닌 경우 날짜 및 시간 값의 1/1000000초입니다.
    추가 정보: "FFFFFF" 사용자 지정 형식 지정자.
    2009-06-15T13:45:30.6175420 -> 617542
    2009-06-15T13:45:30.0000005 -> (출력 없음)
    "FFFFFFF" 0이 아닌 경우 날짜 및 시간 값의 1/10000000초입니다.
    추가 정보: "FFFFFFF" 사용자 지정 형식 지정자.
    2009-06-15T13:45:30.6175425 -> 6175425
    2009-06-15T13:45:30.0001150 -> 000115
    "g", "gg" 서기 또는 연대입니다.
    추가 정보: “g” 또는 “gg” 사용자 지정 형식 지정자.
    2009-06-15T13:45:30.6170000 -> A.D.
    "h" 12시간 형식을 사용하는 1부터 12까지의 시간입니다.
    추가 정보: "h" 사용자 지정 형식 지정자.
    2009-06-15T01:45:30 -> 1
    2009-06-15T13:45:30 -> 1
    "hh" 12시간 형식을 사용하는 01부터 12까지의 시간입니다.
    추가 정보: "hh" 사용자 지정 형식 지정자.
    2009-06-15T01:45:30 -> 01
    2009-06-15T13:45:30 -> 01
    "H" 24시간 형식을 사용하는 0부터 23까지의 시간입니다.
    추가 정보: “H” 사용자 지정 형식 지정자.
    2009-06-15T01:45:30 -> 1
    2009-06-15T13:45:30 -> 13
    "HH" 24시간 형식을 사용하는 00부터 23까지의 시간입니다.
    추가 정보: “HH” 사용자 지정 형식 지정자.
    2009-06-15T01:45:30 -> 01
    2009-06-15T13:45:30 -> 13
    "K" 표준 시간대 정보입니다.
    추가 정보: “K” 사용자 지정 형식 지정자.
    DateTime 값과 함께 사용하는 경우
    2009-06-15T13:45:30, Kind Unspecified ->
    2009-06-15T13:45:30, Kind Utc -> Z
    2009-06-15T13:45:30, Kind Local -> -07:00(로컬 컴퓨터 설정에 따라 달라짐)
    DateTimeOffset 값과 함께 사용하는 경우
    2009-06-15T01:45:30-07:00 --> -07:00
    2009-06-15T08:45:30+00:00 --> +00:00
    "m" 0부터 59까지의 분입니다.
    추가 정보: "m" 사용자 지정 형식 지정자.
    2009-06-15T01:09:30 -> 9
    2009-06-15T13:29:30 -> 29
    "mm" 00부터 59까지의 분입니다.
    추가 정보: "mm" 사용자 지정 형식 지정자.
    2009-06-15T01:09:30 -> 09
    2009-06-15T01:45:30 -> 45
    "M" 1부터 12까지의 월입니다.
    추가 정보: “M” 사용자 지정 형식 지정자.
    2009-06-15T13:45:30 -> 6
    "MM" 01부터 12까지의 월입니다.
    추가 정보: “MM” 사용자 지정 형식 지정자.
    2009-06-15T13:45:30 -> 06
    "MMM" 월의 약식 이름입니다.
    추가 정보: “MMM” 사용자 지정 형식 지정자.
    2009-06-15T13:45:30 -> Jun (en-US)
    2009-06-15T13:45:30 -> juin (fr-FR)
    2009-06-15T13:45:30 -> Jun (zu-ZA)
    "MMMM" 월의 전체 이름입니다.
    추가 정보: “MMMM” 사용자 지정 형식 지정자.
    2009-06-15T13:45:30 -> June (en-US)
    2009-06-15T13:45:30 -> juni (da-DK)
    2009-06-15T13:45:30 -> uJuni (zu-ZA)
    "s" 0부터 59까지의 초입니다.
    추가 정보: "s" 사용자 지정 형식 지정자.
    2009-06-15T13:45:09 -> 9
    "ss" 00부터 59까지의 초입니다.
    추가 정보: "ss" 사용자 지정 형식 지정자.
    2009-06-15T13:45:09 -> 09
    "t" AM/PM 지정자의 첫 문자입니다.
    추가 정보: “t” 사용자 지정 형식 지정자.
    2009-06-15T13:45:30 -> P (en-US)
    2009-06-15T13:45:30 -> 午 (ja-JP)
    2009-06-15T13:45:30 -> (fr-FR)
    "tt" AM/PM 지정자입니다.
    추가 정보: “tt” 사용자 지정 형식 지정자.
    2009-06-15T13:45:30 -> PM (en-US)
    2009-06-15T13:45:30 -> 午後 (ja-JP)
    2009-06-15T13:45:30 -> (fr-FR)
    "y" 0부터 99까지의 연도입니다.
    추가 정보: “y” 사용자 지정 형식 지정자.
    0001-01-01T00:00:00 -> 1
    0900-01-01T00:00:00 -> 0
    1900-01-01T00:00:00 -> 0
    2009-06-15T13:45:30 -> 9
    2019-06-15T13:45:30 -> 19
    "yy" 00부터 99까지의 연도입니다.
    추가 정보: “yy” 사용자 지정 형식 지정자.
    0001-01-01T00:00:00 -> 01
    0900-01-01T00:00:00 -> 00
    1900-01-01T00:00:00 -> 00
    2019-06-15T13:45:30 -> 19
    "yyy" 최소 세 자리 숫자로 된 연도입니다.
    추가 정보: “yyy” 사용자 지정 형식 지정자.
    0001-01-01T00:00:00 -> 001
    0900-01-01T00:00:00 -> 900
    1900-01-01T00:00:00 -> 1900
    2009-06-15T13:45:30 -> 2009
    "yyyy" 네 자리 숫자로 된 연도입니다.
    추가 정보: “yyyy” 사용자 지정 형식 지정자.
    0001-01-01T00:00:00 -> 0001
    0900-01-01T00:00:00 -> 0900
    1900-01-01T00:00:00 -> 1900
    2009-06-15T13:45:30 -> 2009
    "yyyyy" 다섯 자리 숫자로 된 연도입니다.
    추가 정보: “yyyyy” 사용자 지정 형식 지정자.
    0001-01-01T00:00:00 -> 00001
    2009-06-15T13:45:30 -> 02009
    "z" 앞에 0이 표시되지 않는 UTC에서의 시간 오프셋입니다.
    추가 정보: “z” 사용자 지정 형식 지정자.
    2009-06-15T13:45:30-07:00 -> -7
    "zz" 한 자리 값의 경우 앞에 0이 표시되는 UTC에서의 시간 오프셋입니다.
    추가 정보: “zz” 사용자 지정 형식 지정자.
    2009-06-15T13:45:30-07:00 -> -07
    "zzz" UTC에서의 시간 및 분 오프셋입니다.
    추가 정보: “zzz” 사용자 지정 형식 지정자.
    2009-06-15T13:45:30-07:00 -> -07:00
    ":" 시간 구분 기호입니다.
    추가 정보: “:” 사용자 지정 형식 지정자.
    2009-06-15T13:45:30 -> : (en-US)
    2009-06-15T13:45:30 -> . (it-IT)
    2009-06-15T13:45:30 -> : (ja-JP)
    "/" 날짜 구분 기호입니다.
    추가 정보: “/” 사용자 지정 형식 지정자.
    2009-06-15T13:45:30 -> / (en-US)
    2009-06-15T13:45:30 -> - (ar-DZ)
    2009-06-15T13:45:30 -> . (tr-TR)
    "string"
    'string'
    리터럴 문자열 구분 기호입니다.
    추가 정보: 문자 리터럴.
    2009-06-15T13:45:30 ("arr:" h:m t) -> arr: 1:45 P
    2009-06-15T13:45:30 ('arr:' h:m t) -> arr: 1:45 P
    % 뒤에 오는 문자를 사용자 지정 형식 지정자로 정의합니다.
    추가 정보: 단일 사용자 지정 형식 지정자 사용
    2009-06-15T13:45:30 (%h) -> 1
    \ 이스케이프 문자입니다.
    추가 정보: 문자 리터럴 및 이스케이프 문자 사용.
    2009-06-15T13:45:30 (h \h) -> 1 h
    기타 문자 문자가 변경되지 않은 상태로 결과 문자열에 복사됩니다.
    추가 정보: 문자 리터럴.
    2009-06-15T01:45:30 (arr hh:mm t) -> arr 01:45 A

     

     

    대상 경로는 파일을 복사하거나 이동할 폴더의 위치입니다. 예제에서는 after 폴더를 선택했습니다. 원본 파일은 변수로부터 가져오기 때문에 설정하지 않아도 됩니다. 실행하면 자동으로 내용이 채워지고, 이 파일명을 분석해서 날짜나 인덱스 또는 날짜와 인덱스 모두 추가하고 대상 경로에 저장하거나 이동합니다. 문자 채움은 기본값이 0입니다. 이 속성은 독립적으로 혼자 사용할 수 없고 숫자 길이 속성과 같이 사용합니다. 먼저 숫자 길이가 4로 설정되어 있어서 "파일명0000"과 같이 숫자로 4자리를 파일명에 붙여줍니다. 만약, 다음 파일이라면 "파일명0001"이 됩니다. 이렇게 인덱스가 순차적으로 증가하게 됩니다. 물론, 이 기능을 사용하려면 숫자 증가 속성이 True로 설정되어 있어야 합니다. 이 속성이 False면 숫자는 증가하지 않고 파일명만 만들어집니다. 마지막으로 변경할 파일명에 "NGM_{D}_{N}"와 같이 입력되어 있습니다. 여기서 {D}는 날짜(Date)와 치환되고, {N}은 숫자 증가와 치환됩니다. 이 값을 잘 조절하면 추가할 날짜와 숫자 인덱스를 원하는 위치에 추가할 수 있게됩니다. 물론, 치환 문자({D} 또는 {N})를 안넣어도 됩니다. 그러면, 숫자와 날짜가 파일명 뒤로 자동으로 추가됩니다.

    Ja4mOsI.png

     

     

    실행(Ctrl+Alt+F8)하면 에디터 하단의 아웃풋에 작업 내역이 표시됩니다. 또한 속성창에 반복 횟수와 파일의 전체 경로 및 파일명이 표시됩니다. 첨부 파일을 에디터로 열고 테스트 해보세요. 그리고, "복사 붙여넣기" 속성을 True로 변경하면 파일 이동이 아닌 복사/붙여넣기로 동작됩니다. 또한, 원본 파일의 폴더를 대상 폴더에 설정하면 파일 이름 변경이 됩니다. 동일한 폴더에서 작업하는 경우에는 파일명 변경이니 이점 꼭 유의하셔야 합니다.

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

     

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천4 비추천0

    첨부파일

    댓글목록

    등록된 댓글이 없습니다.