소프트웨어 오토핫키 파일 정렬 관련 질문하나 드립니다.
2022.11.23 15:33
안녕하세요.
오토핫키에서 막히는 부분이 있어 이렇게 또 질문 드리게되었습니다.ㅠㅠ
예시 d:\테스트 폴더내에 아래와 같은 파일이 있습니다.
애국가 1.txt
애국가 2.txt
애국가 3.txt
애국가 4.txt
애국가 5.txt
애국가 6.txt
애국가 7.txt
애국가 8.txt
애국가 9.txt
애국가 10.txt
애국가 11.txt
예를들어 위 처럼 11개의 파일이 있다는 가정하에
Loop files, d:\테스트\*.txt
{
msgbox, %A_LoopFileLongPath%
}
위의 코드를 실행하면
애국가 10.txt
애국가 11.txt
애국가 1.txt
이런식으로 결과값이 나오더라구요 찾아보니 Sort로 정렬이 가능하다하여 옵션에 있는 숫자로 정렬인 n을 사용해보고 다 해봐도 역순 정렬 말고는 위와 동일하게 값이 나타납니다
물론 파일을 애국가 01, 02와 같이 변경 후 위 코드를 돌리면 순서대로 잘 나타나긴 하지만 너무 번거로운 작업일것 같습니다.
혹시 파일이름 변경 없이 결과값이 예시와 같이 순차적으로 나오게 할 수 있는 방법이 있을까요?
답변 주시면 감사하겠습니다.ㅠㅠ
댓글 [12]
-
내꼬 2022.11.23 15:49 -
천공의아키라 2022.11.23 16:16
답변은 감사드리지만 윈도우 탐색기에서는 정상적으로 보여집니다~
감사합니다.
-
줄리아니 2022.11.23 15:55
var := "애국가 1.txt,애국가 11.txt,애국가 2.txt,애국가 3.txt"
Sort var,P5 N D,
MsgBox % var
옵션에서 P를 사용하면 됩니다 다음은 P 에 대한 설명입니다
Pn: Sorts items based on character position n (do not use hexadecimal for n). If this option is not present, n defaults to 1, which is the position of the first character. The sort compares each string to the others starting at its nth character. If n is greater than the length of any string, that string is considered to be blank for the purpose of the sort. When used with option N (numeric sort), the string's character position is used, which is not necessarily the same as the number's digit position.
-
천공의아키라 2022.11.23 16:19
와~ 감사합니다~
해결 되었습니다~ 다시한번 감사드립니다.
-
메리아 2022.11.23 16:37
음... 저 옵션을 보면
P는 position이라는 의미로 보이는데, 당장은 되는거처럼 보여도 오류가 생길 수 있을듯 하네요
단순히 몇번째 위치를 보고 정렬한다는건데 다양한 길이의 숫자가 있다면 좀 무리일듯...
-
천공의아키라 2022.11.23 16:57
네 말씀하신대로 하나는 되던데 다른건 안되네요 ㅠㅠ
감사합니다.
-
천공의아키라 2022.11.23 16:59
바로 하나 해봤을땐 되더니 다른건 안되네요 ㅠㅠ 감사합니다.
-
줄리아니 2022.11.23 17:19
p5 옵션이 5번째 문자 위치를 기준으로 정렬을 시키기는 거라서요 다른 파일 할때는 pN 숫자를 변경해야 합니다
-
메리아 2022.11.23 16:30
기본적으로 일반 프로그래밍의 기본정렬과 탐색기 정렬은 다릅니다.
어떤 정렬이라도 기본정렬은 한글자 단위로 분석하기 때문에
1,10,2,3,4 ... 이런 결과가 나옵니다.
탐색기는 숫자를 통째로 인식해서
1,2,3,4...10... 이런 결과를 내는데, 이걸 "자연정렬 - natural sort"라고 부릅니다.
어떤 언어건 해당 언어의 natural sort를 검색하면 함수나 API가 나옵니다.
오토핫키의 경우는 아래의 API 함수를 사용하라고 하네요.
StrCmpLogicalW
참고 :
https://www.autohotkey.com/boards/viewtopic.php?t=74157
https://www.autohotkey.com/boards/viewtopic.php?p=273947#p273947
다른 언어라도 위의 API 함수를 쓰거나
따로 natural sort를 구현한 함수가 있다면 그걸 쓰면 됩니다.
참고로 탐색기의 경우, 숫자말고도 정렬규칙이 기본정렬과는 몇가지 다릅니다.
또한 자연정렬도 조금씩 차이가 있을 수 있으므로,
탐색기와 무조건 일치한다는 보장이 없기에, 순서가 탐색기와 무조건 일치한다는 가정으로 코딩하면 안됩니다.^^
-
천공의아키라 2022.11.23 16:58
답변 감사드립니다~ 참고해보겠습니다
-
지후빠 2022.11.23 17:24
문자 위치와 상관 없이 사용할 수 있는 방법이 있네요. https://www.autohotkey.com/boards/viewtopic.php?f=5&t=63893
Loop files, *.txt
FileList .= A_LoopFileLongPath . "`n"
Sort, FileList, F SortStrCmpLogical
msgbox, %FileList%
return
SortStrCmpLogical(vTextA, vTextB, vOffset)
{
local
vRet := DllCall("shlwapi\StrCmpLogicalW", "WStr",vTextA, "WStr",vTextB)
return vRet ? vRet : -vOffset
}
커피 한잔 뽑고서 올렸더니 몇 건의 댓글이 더 추가 되었네요. ^^
-
천공의아키라 2022.11.23 17:30
와 답변 감사합니다~
일단 몇개 해봤는데 잘 동작합니다~
감사합니다
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
6100 | 소프트웨어| win 8 pro 에서 한글 2010을 실행시 runtime error 문제 [2] | 너무 졸려 | 4422 | 11-01 |
6099 | 윈 도 우| 윈도우7용 프리셀 올려주실분 계신가요? [4] | 별빛지기 | 4422 | 01-12 |
6098 | 하드웨어| intel(r) management engine interface 드라이버 관련.. [2] | bloodsign | 4423 | 12-23 |
6097 | 소프트웨어| acronis true image포터블 사용문의 [1] | 천국문 | 4423 | 08-06 |
6096 | 윈 도 우| win 7 엔터프라이즈는 복구모드 지원 안함 [4] | 우금티 | 4424 | 02-12 |
6095 | 윈7에서 messenger 작업표시줄이 아닌 트레이에 표시하는 ... [2] | 샤샤 | 4425 | 04-18 |
6094 | 윈 도 우| 오류보고 끄는방법 [5] | 둥근윈도우 | 4425 | 01-07 |
6093 | 윈 도 우| 윈7의 윈도우 방화벽에서 특정 포트를 여는 방법? [2] | bluespy | 4426 | 02-22 |
6092 | 윈 도 우| Windows 자동 업데이트 다운로드 경로 [2] | Lucky 7 | 4426 | 12-15 |
6091 | 윈 도 우| 윈도우7 날짜시간에서요..자꾸변경 [2] | April. J. | 4426 | 12-08 |
6090 | 윈7 32bit 서든어택 설치 해결 방법좀 알려 주세요. [2] | º루나 | 4427 | 10-02 |
6089 | 케이블 모뎀 접지 질문 좀 드립니다. [4] | 타키온 | 4427 | 10-09 |
6088 | 윈 도 우| 인터넷 웹사이트에서 스트리밍 영상 보려는데 잘 안될때 ㅠ [3] | 87년산 쌍추 | 4427 | 01-08 |
6087 | 윈 도 우| 11n 무선인터넷 사용방법 [5] | 자비 | 4427 | 05-22 |
6086 | 윈 도 우| 급한 질문입니다. 논리드라이브 삭제 하면..? [4] | 윈도우7xp | 4427 | 10-29 |
6085 | 소프트웨어| 구글크롬13 유투브 동영상 다운로드 확장프로그램 추천 [6] | BigShit | 4427 | 08-09 |
6084 | 기 타| 오피스2013 인증 받는 방법 어떻게 하는건가요? [3] | 맛참 | 4427 | 04-25 |
6083 | 윈도우7 64bit에서 돌아가는 모니터 테스트 프로그램은 없... [2] | 키미니 | 4428 | 09-28 |
6082 | 윈 도 우| 윈도우7 인증 관련질문드립니다. [4] | 미스터하하 | 4428 | 02-27 |
6081 | 하드웨어| 그럼 이제 삼성과 엘지의 ODD 는 못보는건가요? [10] | michael | 4428 | 06-23 |
root blog :: 윈도우10 파일 탐색기 숫자 정렬 방식 변경하기 (tistory.com)
위 링크가 답일겁니다.