반응형
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- ControlGetText
- autohotkey
- Var:=식
- if
- ControlSend
- API
- SetMouseDelay
- EnvDiv
- EnvSub
- if(식)
- 식의 설명
- SetTitleMatchMode
- IfInString
- EnvAdd
- StringGetPos
- DetectHiddenWindows
- IfWinExist
- Menu
- IF (식)
- SetKeyDelay
- 식
- Blocks
- EnvMult
- 배열
- Threads
- SetEnv
- SetControlDelay
- 함수
- MouseClick
- EnvSet
Archives
- Today
- Total
ㄴrㅎnㅂrㄹrㄱi
Loop,READ 텍스트 파일을1행씩 읽어들여, 반복 처리를 실시한다 본문
반응형
Loop,READ
텍스트 파일을1행씩 읽어들여, 반복 처리를 실시한다
Loop, Read, InputFile [, OutputFile, FutureUse]
Parameters
인수명 | 설명 |
---|---|
Read | 제일 인수는 「READ」라고 한다.변수에 격납해 참조해도 상관없다. |
InputFile | 읽어들이고 싶은 파일명. 상대 패스로 지정하면, %A_WorkingDir% (으)로부터 검색된다. |
OutputFile | 루프의 사이, FileAppend커멘드를 제2인수를 생략 해 실행하면, 이 파일에 써진다. 루프중에서 최초로FileAppend(을)를 사용했을 때에 열려 그 후 루프를 빠질 때까지 연 채로 있다. 커멘드를 실행할 때마다 다시 여는 것이 없기 때문에, 제2인수를 붙여 실행하는 것보다 퍼포먼스가 좋아진다. 상대 패스로 지정하면, %A_WorkingDir% (으)로부터 검색된다. 파일명의 선두에 「*」(을)를 붙이면, 바이너리 모드로 열려 개행 코드의 자동변역(LF→CR+LF)(을)를 하지 않게 된다. 파일명을 「*」라고 하면, 제2인수 없음의 FileAppend그리고 스크립트의 표준 출력에 문자열을 출력할 수 있다. |
FutureUse | 장래의 확장을 위해서 확보되고 있다.현재 이 인수는 무시된다. |
Remarks
읽어내진 행(개행은 포함하지 않는다)(은)는 「A_LoopReadLine」로서 참조할 수 있다.
65534문자를 넘는 행은, 여러 차례로 나누어 읽힌다.
개행 코드는,CR+LF(와)과LF에 대응(CR에는 비대응)
파일의 각 행을 읽어내려면 , FileReadLine커멘드를 사용하는 방법도 있지만,Loop, Read(을)를 사용하는 편이 효율이 좋다.
읽어들인 행을 StringSplit커멘드나 Loop,PARSE그리고 더욱 분할할 수도 있다.
그 외의 사양은, 통상의 Loop(와)과 같이.
Related
FileRead, FileReadLine, FileAppend, Sort, Loop, Break, Continue, Blocks, FileSetAttrib, FileSetTime
Example(s)
; Example #1: Only those lines of the 1st file that contain ; the word FAMILY will be written to the 2nd file. Uncomment ; this line to overwrite rather than append to any existing file: ;FileDelete, C:\Docs\Family Addresses.txt Loop, read, C:\Docs\Address List.txt, C:\Docs\Family Addresses.txt { IfInString, A_LoopReadLine, family, FileAppend, %A_LoopReadLine%`n }
; Example #2: A working script that attempts to extract all FTP and HTTP ; URLs from a text or HTML file: FileSelectFile, SourceFile, 3,, Pick a text or HTML file to analyze. if SourceFile = return ; This will exit in this case. SplitPath, SourceFile,, SourceFilePath,, SourceFileNoExt DestFile = %SourceFilePath%\%SourceFileNoExt% Extracted Links.txt IfExist, %DestFile% { MsgBox, 4,, Overwrite the existing links file? Press No to append to it.`n`nFILE: %DestFile% IfMsgBox, Yes FileDelete, %DestFile% } LinkCount = 0 Loop, read, %SourceFile%, %DestFile% { URLSearchString = %A_LoopReadLine% Gosub, URLSearch } MsgBox %LinkCount% links were found and written to "%DestFile%". return URLSearch: ; It's done this particular way because some URLs have other URLs embedded inside them: StringGetPos, URLStart1, URLSearchString, http:// StringGetPos, URLStart2, URLSearchString, ftp:// StringGetPos, URLStart3, URLSearchString, www. ; Find the left-most starting position: URLStart = %URLStart1% ; Set starting default. Loop { ; It helps performance (at least in a script with many variables) to resolve ; "URLStart%A_Index%" only once: StringTrimLeft, ArrayElement, URLStart%A_Index%, 0 if ArrayElement = ; End of the array has been reached. break if ArrayElement = -1 ; This element is disqualified. continue if URLStart = -1 URLStart = %ArrayElement% else ; URLStart has a valid position in it, so compare it with ArrayElement. { if ArrayElement <> -1 if ArrayElement < %URLStart% URLStart = %ArrayElement% } } if URLStart = -1 ; No URLs exist in URLSearchString. return ; Otherwise, extract this URL: StringTrimLeft, URL, URLSearchString, %URLStart% ; Omit the beginning/irrelevant part. Loop, parse, URL, %A_Tab%%A_Space%<> ; Find the first space, tab, or angle (if any). { URL = %A_LoopField% break ; i.e. perform only one loop iteration to fetch the first "field". } ; If the above loop had zero iterations because there were no ending characters found, ; leave the contents of the URL var untouched. ; If the URL ends in a double quote, remove it. For now, StringReplace is used, but ; note that it seems that double quotes can legitimately exist inside URLs, so this ; might damage them: StringReplace, URLCleansed, URL, ",, All FileAppend, %URLCleansed%`n LinkCount += 1 ; See if there are any other URLs in this line: StringLen, CharactersToOmit, URL CharactersToOmit += %URLStart% StringTrimLeft, URLSearchString, URLSearchString, %CharactersToOmit% Gosub, URLSearch ; Recursive call to self. return
반응형
'AUTOHOTKEY > 레퍼런스' 카테고리의 다른 글
Menu pop-up menu를 작성하거나 표시하거나 한다.task tray 아이콘이나 툴 팁의 설정도 실시할 수 있다. (0) | 2007.11.05 |
---|---|
Loop (registry) 지정 키 이하의 레지스트리 키 각각 대하고 반복 처리를 실시한다 (0) | 2007.11.05 |
Loop,PARSE 문자열을 지정의 단락 문자로 분할하고, 각각 대해 반복 처리 (0) | 2007.11.05 |
Loop(files) 패턴에 일치하는 파일 각각 붙어 융통반네 해를 실시한다 (0) | 2007.11.05 |
Loop 커멘드 혹은 블록을 지정 회수 혹은break등이 실행될 때까지 반복한다 (0) | 2007.11.05 |
Comments