Skip to content

매크로

매크로는 이름이 붙은 파일 작업의 연속입니다 — 폴더를 만들고, 선택 항목을 그 안으로 옮기고, 남은 것에 태그를 붙이는 식으로 — 한 번의 클릭으로 다시 실행할 수 있습니다. 스크립트 언어가 아닙니다. 조건도 반복도 없으며, 그것은 의도한 것입니다. 매크로는 읽을 수 있는 목록이고, 승인하기 전에 읽을 수 있어야 하는 것이 바로 그것입니다.

매크로가 하는 모든 일은 어시스턴트가 쓰는 것과 같은 장치를 거칩니다. 따라서 매크로는 여러분이 허용하지 않은 일을 할 수 없고, 각 단계는 작업 기록에 남으며, 되돌릴 수 있는 단계는 여전히 되돌릴 수 있습니다.

창 하나: 환경설정 ▸ 매크로…

매크로에 관한 모든 것이 그 하나의 항목 뒤에 있습니다. 목록, 매크로를 만드는 두 가지 방법, 그리고 파일로 가는 길. 메뉴에서 더 고를 것은 없습니다.

가장 빠른 길: 기록하기

매크로를 처음부터 쓸 필요도 없고, 나중에 그것이 어디서 시작됐는지 따져 볼 필요도 없습니다.

  1. 환경설정 ▸ 매크로… ▸ 매크로 기록…을 고릅니다. 창이 비켜서고, 기록이 진행 중임을 알리며 단계를 세는 작은 패널이 나타납니다.
  2. 일을 한 번 하십시오. 복사, 이동, 이름 바꾸기, 삭제, 폴더와 파일 만들기. 평소처럼 작업하면 됩니다. 기록은 방해가 되지 않습니다.
  3. 중지하고 저장….
  4. 단계는 이미 선택된 상태로 돌아옵니다. 준비만 하려던 것은 선택을 해제하고, 매크로에 이름을 주고, 이 매크로용 버튼도 추가는 켠 채로 두십시오.
  5. 다음번에 선택된 것을 대상으로 삼게 하려면 이 파일들 대신 패널을 따르기를 체크하십시오. 체크하는 동안 각 줄이 바뀌므로 무엇을 저장하는지 보면서 정할 수 있습니다.

매크로 저장을 누르면 버튼이 막대에 생깁니다. 이것이 전부입니다.

기록 버리기는 기록을 버리고 아무것도 저장하지 않습니다. 기록을 누르기 전에는 아무것도 기록되지 않고, 중지한 뒤에도 마찬가지입니다. 양쪽 끝이 있는 이유가 바로 그것입니다.

기록은 재시작을 넘겨 이어집니다. 기록이 진행되는 동안 Peach Commander가 종료되면 — 직접 종료했든 비정상 종료됐든 — 그 기록과 함께 돌아오며 그 사실을 알려 줍니다. 계속하거나 버리면 됩니다.

키나 버튼에 두고 싶다면 명령의 이름은 cm_MacroRecord입니다. 기록을 시작하고, 진행 중인 기록을 중지합니다.

다른 길: 이미 일어난 일에서

같은 창의 최근 작업에서…는 새로 기록하는 대신 마지막에 일어난 일들로 매크로를 만듭니다. 일을 막 끝내고 나서야 매크로 생각이 났을 때 쓸모가 있습니다.

최근 작업에서 매크로 만들기 시트 — 방금 한 일이 선택 가능한 단계로 나열된 모습 이미 일어난 일을, 새 매크로의 단계로 제안합니다.

목록에는 둘 다 들어 있습니다: 패널에서 직접 한 일(F5, F6, F7, F8과 이름 변경)과 어시스턴트나 다른 매크로가 한 일. 각 줄이 어느 쪽인지 말해 줍니다 — 둘을 섞어 쓴 뒤에는 같은 두 파일이 양쪽에 다 나타날 수 있기 때문입니다. 여기서는 행이 선택되지 않은 상태로 시작합니다. ‘지난 30분 동안 내가 한 모든 것’이 뜻하는 매크로인 경우는 드물기 때문입니다.

이 길에는 기록이 필요합니다. 직접 한 일은 전체 기록에서 다시 읽어 오므로, 그것을 꺼 두었다면(설정 ▸ 기타 ▸ 전체 기록 기록하기) 이 목록에는 당신의 것이 하나도 없으며, 그렇다고 알려 줍니다. 매크로 기록…은 여기에 의존하지 않습니다.

제공되지 않는 것. 압축 파일 만들기처럼 앱이 이름으로만 기억하는 일은 단계로 바꿀 수 없습니다 — 담을 형태가 없습니다. 그런 줄은 빠지지 않고 이유와 함께 흐리게 표시됩니다. 다섯 중 셋만 제공하는 목록이 둘을 놓친 것처럼 보이지 않게 하기 위해서입니다. 그리고 달리 요청하지 않으면 경로는 실제로 사용된 것입니다: 기록된 매크로는 그 복사를 되풀이하지, “그런 종류의 복사”를 하지 않습니다. 편집기에서 열어 패널을 따라가야 할 자리에 %S나 %T를 넣으십시오.

패널을 따르기가 바로 달리 요청하는 방법입니다. 한 폴더에서 온 파일들은 선택 항목이 되고, 두 패널 중 하나인 폴더는 그 패널이 되며, 그 안의 폴더는 뒷부분을 유지합니다 — 기록된 “이 청구서 네 개를 문서/2026-08로 옮기기”가 “선택한 것을 반대쪽 2026-08로 옮기기”가 되고, 내일 다른 두 폴더에서도 작동합니다. 어느 패널 아래에도 없는 것은 그대로 경로로 남습니다. 접어 넣을 곳이 없기 때문입니다. 이 옵션은 실제로 무언가 달라질 때만 제공됩니다.

함께 제공되는 예제

파일 편집…을 처음 열면 파일이 여덟 개의 완성된 예제와 함께 만들어집니다. 평범한 매크로이므로 고쳐 쓰거나 필요 없는 것은 지우면 되고, 각각에는 무엇을 하는지와 무엇을 바꾸면 되는지를 적은 주석이 붙어 있습니다:

매크로 하는 일
Open today's folder 활성 패널에 오늘 날짜 폴더를 만들고 그 안으로 들어갑니다. 내일 다시 써도 됩니다.
File the selection into a dated folder PDF를 모두 선택해 반대쪽에 연-월 폴더를 만들고 그리로 옮깁니다.
Copy the selection to a dated backup folder 직접 선택한 것을 반대쪽의 날짜 폴더로 복사합니다.
Move the pictures into an Images subfolder 마스크 하나, 하위 폴더 하나 — 지금 있는 폴더 안에서.
Merge the CSV files into one and open it 한 단계가 앞 단계의 결과를 어떻게 쓰는지 보여 줍니다.
File the selection into a folder you name 실행할 때 폴더를 물어봅니다.
Mark the file under the cursor as reviewed 태그를 붙이고 주석에 날짜를 남깁니다 — 선택이 아니라 파일 하나에.
Put the temporary files in the Trash 삭제하는 매크로이며, 권한 확인 창을 한 번 보기에 알맞습니다.

각각이 명령이 되므로, 아무것도 쓰지 않고도 어느 것이든 버튼이나 단축키에 올릴 수 있습니다.

관리하기

환경설정 ▸ 매크로…가 그 목록입니다. 각 매크로의 이름, 명령 이름, 단계 수, 그리고 권한 관문이 무엇을 물을지 — 그래서 ‘이건 삭제한다’를 키에 올리기 전에 볼 수 있습니다. 거기서 실행, 이름 바꾸기, 복제, 순서 바꾸기, 삭제, 내보내기, 가져오기를 할 수 있습니다. 행 위에 포인터를 올리면 단계가 보입니다.

실행은 방금 기록한 것을 창을 먼저 닫고 명령을 찾아다니지 않고 바로 시험해 보는 방법입니다. 다른 모든 실행과 똑같은 계획과 똑같은 확인을 거칩니다. 이 윈도우에는 자체 권한이 없습니다.

내보내기…는 선택한 매크로를 자체 파일로 쓰고, 가져오기…는 누군가 보내 준 파일에서 매크로를 추가합니다. 매크로마다 파일 하나를 두는 이유가 바로 이것입니다. 가져오기는 결코 덮어쓰지 않습니다. id가 이미 쓰이고 있으면 비어 있는 것을 받고(당신의 backup 옆에 들어온 것은 backup-2가 됩니다), 새 매크로가 어떤 id로 들어왔는지도 알려 줍니다. 당신이 만들 버튼은 올바른 id를 가리켜야 하니까요.

매크로 관리 창 — 각 매크로의 명령 이름, 단계 수, 권한 각 매크로의 이름, 무엇으로 실행되는지, 무엇에 대해 권한을 물을지.

순서는 장식이 아닙니다: 파일의 순서가 곧 명령 브라우저와 버튼 바 선택기가 나열하는 순서입니다.

삭제할 때 버튼도 함께 없앨지 물어봅니다. 이 창을 한 번도 열지 않더라도 알아 둘 값어치가 있습니다 — 손으로 지운 매크로는 버튼과 단축키를 남기고, 둘 다 아무것도 하지 않게 됩니다. 이제 앱은 잠자코 있는 대신 매크로가 없다고 말해 주지만, 버튼은 여전히 여러분의 몫입니다. 단축키나 메뉴 항목은 설정한 자리에서 직접 빼야 합니다.

단계는 여기서 편집하지 않습니다. 파일 편집…이 그 일을 편집기에 넘깁니다. 양식이 없는 것과 같은 이유입니다: 한 단계는 도구 이름과 그 인수이고, 그것이 바로 JSON입니다.

매크로를 직접 편집하기

파일 편집…은 선택한 매크로의 자체 파일을 엽니다 — 설정 폴더의 macros/<id>.json이며, 처음에는 위의 예제와 함께 만들어집니다. 선택이 없으면 폴더 자체가 패널에 표시되고, 거기서 F3으로 읽고 F4로 편집합니다. 매크로는 단계의 목록이고, 각 단계는 도구 하나와 그 인수를 지정합니다:

{
  "id": "stage-by-month",
  "title": "File the selection into a dated folder",
  "icon": "calendar",
  "steps": [
    { "tool": "set_selection", "arguments": { "mask": "*.pdf" } },
    { "tool": "make_directory", "arguments": { "path": "%T/%{date:yyyy-MM}" } },
    { "tool": "move", "arguments": { "sources": "%S", "destination": "%T/%{date:yyyy-MM}" } }
  ]
}

저장하면 매크로가 즉시 다시 읽히고, 잘못된 곳이 있으면 알려 줍니다 — 도구 이름의 오타, 빠진 필수 인수, 같은 id를 쓴 두 매크로. 잘못된 매크로는 실행되지 않고 버튼에도 올라가지 않으며, 편집기가 아직 열려 있는 동안 어떤 매크로의 무엇이 문제인지 알려 줍니다.

어떤 도구가 있고 무엇을 받는지는 환경설정 ▸ 명령 브라우저…에서 볼 수 있고, 어시스턴트에게 list_macros를 요청해도 됩니다.

자리 표시자

낱글자는 버튼 막대와 시작 메뉴가 쓰는 것과 같습니다. 버튼을 만들어 본 적이 있다면 새로 배울 것이 없습니다.

자리 표시자 의미
%P 활성 패널의 폴더
%T 다른 패널의 폴더
%N 커서 아래의 파일
%S 선택된 파일 — 목록이며, copy, move, move_to_trash가 받는 것이 바로 이것입니다
%{date:yyyy-MM} 매크로가 시작된 날짜를 해당 형식으로
%{1.destination} 1단계 결과에서 이름으로 고른 값 하나 — 여기서는 merge_files가 쓴 파일
%{1} 1단계의 결과 전체 — 그 단계가 경로나 경로 목록을 곧바로 내놓았을 때
%{ask:Folder name} 매크로가 실행될 때 물어봅니다. %{ask:Folder name=Archive}는 입력란을 Archive로 채워 둡니다

중괄호는 추가 항목을 위한 것입니다. 낱글자는 이미 쓰이고 있기 때문입니다. %M은 프로그램의 다른 모든 곳에서 “다른 패널의 커서 아래 이름”을 뜻하므로, 월을 그렇게 쓸 수는 없었습니다.

단계 결과에는 이름 있는 형태를 쓰십시오. 대부분의 도구는 값 하나가 아니라 여럿을 보고합니다 — merge_files는 어디에 썼는지, 몇 개를 합쳤는지, 몇 행이 되었는지를 보고합니다 — 그래서 %{2.destination}이 보통의 표기이고, 맨 %{2}는 경로 하나만 돌려주는 도구에서만 통합니다. 없는 이름이거나 경로가 아닌 값이면 짐작하지 않고 매크로를 멈춥니다.

파일 이름 속의 %는 그냥 %입니다. 단계가 내놓은 것도, 패널에서 온 이름도 다시 자리표시자로 읽히지 않으므로 50%Netto.pdf라는 파일은 매크로를 그대로 통과합니다. 직접 쓴 서식에 글자 그대로의 %가 필요하면 %%처럼 두 번 쓰십시오.

값 물어보기

%{ask:…}는 매크로가 미리 알 수 없는 것을 받아들이는 방법입니다 — 가장 흔한 매크로는 “선택한 것을 내가 이름 붙인 폴더로 옮기기”이고, 이것이 없으면 폴더를 파일에 못박아 두어야 합니다.

계획이 나타나기 전에 묻고, 답은 이미 그 안에 들어 있습니다: 각 줄은 “선택 항목을 ‘청구서’로 옮기기”라고 말하지, “당신이 곧 입력할 무언가로”라고 말하지 않습니다. 질문을 취소하면 매크로가 취소됩니다. 제안된 것도, 하물며 실행된 것도 없습니다.

같은 질문을 두 번 써도 한 번만 묻고 두 곳 모두에 쓰이므로, 같은 폴더를 가리키는 두 단계가 서로 어긋날 수 없습니다. 첫 = 뒤의 글자는 입력란이 처음에 담고 있는 값입니다. 문구는 당신의 것입니다 — 쓴 그대로, 쓴 언어 그대로 보입니다.

답은 값이지 서식이 아닙니다: 50%Netto라고 입력하면 50%Netto라는 이름의 폴더가 생깁니다.

물어보는 매크로는 MCP를 통한 외부 에이전트가 실행할 수 없습니다 — 거기에는 물어볼 사람이 없고, 기본값을 말없이 취하는 것은 당신을 대신해 답하는 일이기 때문입니다. 거부되며, 그렇다고 알려 줍니다.

%S는 매크로가 버튼과 다른 유일한 지점입니다. 버튼에서는 선택 항목이 명령줄용 단어 목록이 되지만, 여기서는 파일 도구가 받는 전체 경로의 목록이 됩니다.

%S나 %{1}이 비어 나오는 단계는 매크로를 멈춥니다 — 아무것도 없이 실행하는 대신에. 파일이 없는 move는 더 작은 move가 아니라 이미 아무 말도 하지 않는 요청이며, 성공했다고 알리는 것은 거짓말이 됩니다.

매크로 실행하기

각 매크로는 mc_<id>라는 이름의 명령이 되므로, 다음 곳에 저절로 나타납니다:

  • 환경 설정 ▸ 명령 브라우저…
  • 환경 설정 ▸ 단축키 편집… — 키에 지정하십시오
  • 버튼 막대 편집기의 명령 선택기
  • 사용하고 있다면 .mnu 메뉴 파일과 usercmd.ini
  • 이름으로 실행할 수 있는 어시스턴트

무언가를 바꾸는 매크로가 실행되기 전에, 매크로는 단계를 목록으로 보여 주고 기다립니다. 원하지 않는 단계는 지울 수 있고, 남은 것이 실행됩니다. 읽기만 하는 매크로는 묻지 않고 실행됩니다. 한 단계를 지우면 그 단계에 기대는 단계들도 함께 빠집니다 — 매크로는 순서이고, 폴더를 채우는 단계는 폴더를 만드는 단계 없이는 실행될 수 없기 때문입니다. 해당 줄들은 스스로 꺼지고 흐려집니다. 단계를 되돌리면 그것들도 돌아오지만, 직접 지운 것은 지워진 채로 남습니다.

매크로 확인 대화상자 — 각 단계가 대상 파일 이름을 담은 확인란 패널에 맞춰 풀어낸 단계들 — 하나하나 지울 수 있습니다.

시작 전에 잘못이라고 알 수 있는 것 — 없는 도구, 빠진 인수, 다른 매크로를 실행하려는 단계 — 은 세 번째 단계 뒤가 아니라 첫 단계 전에 매크로를 멈춥니다. 실행 중에 한 단계가 실패하면 매크로는 계속하지 않고 거기서 멈춥니다: 두 번째 단계는 대개 첫 단계가 일어났다고 전제하며, 만들어지지 않은 폴더로 파일을 옮기는 것은 부분적인 성공이 아닙니다. 보고는 어느 단계인지, 무엇이 잘못되었는지, 그리고 이미 몇 단계가 수행되었는지를 말해 주며, 그 각각은 되돌릴 길이 있는 경우 그것과 함께 작업 기록에 남습니다.

매크로에 허용되는 것

매크로는 그 안에서 가장 까다로운 것을 기준으로 판단됩니다. 단계가 읽기만 하는 매크로는 읽기로 취급되고, 영구 삭제로 끝나는 매크로는 영구 삭제로 통제됩니다 — 무엇이든 실행되기 전에, 네 단계 뒤가 아니라.

명령을 실행하는 단계는 그것이 명령이라는 사실이 아니라 그 명령이 하는 일로 판단됩니다 — cm_DeleteReal을 실행하는 매크로는 삭제하는 매크로이며, 그렇게 표시됩니다. 매크로는 다른 매크로를 실행할 수 없으며, 두 표기 어느 쪽으로도 그렇습니다.

추가로 아무것도 허용하지 않는 것이 기본입니다. 매크로에 여러분의 권한이 허용하지 않는 단계 — 셸 명령, 스크립트 — 가 들어 있으면, 매크로 전체가 이유와 함께 거부되고 아무 일도 일어나지 않습니다.

실행 취소

각 단계가 따로 기록되므로, 매크로 뒤의 실행 취소는 매크로 전체가 아니라 그 마지막 단계를 되돌립니다. 매크로 전체를 되돌리는 기능은 없습니다. 여러 도구에는 역동작이 아예 없고, 그것을 제공하는 버튼은 그런 도구에 대해 거짓을 말하게 되기 때문입니다.

저장 위치

  • 매크로는 설정 폴더의 macros/에 하나씩 <id>.json으로 들어 있습니다 — diff를 볼 수 있고, dotfiles와 함께 보관할 수 있으며, 누군가에게 보낼 수 있는 평범한 파일입니다. 이전 버전의 macros.json은 처음 실행할 때 옮겨지고 macros.json.migrated로 이름이 바뀝니다. 그 뒤로는 아무도 읽지 않습니다.
  • 매크로가 추가한 버튼은 default.bar의 일반적인 버튼 막대 항목이므로, 하나를 없애는 일은 다른 버튼과 다르지 않습니다.

다음 단계