AutoHotKey(오토핫키) 설명서 Loop(files)

Posted by 발전소장
2014. 8. 14. 13:39 AutoHotKey/Commands

Loop(files)

패턴에 일치하는 파일 각각 붙어 융통반네 해를 실시한다

Loop, FilePattern [, IncludeFolders?, Recurse?] 

Parameters

인수명설명
FilePattern 파일명, 폴더명, 와일드 카드.
상대 패스로 지정했을 경우는,%A_WorkingDir%(으)로부터 검색된다.
IncludeFolders? 「0」(이)라면 파일만을 대상으로 한다.
「1」(이)라면 파일과 폴더를 대상으로 한다.
「2」(이)라면 폴더만을 대상으로 한다.
디폴트는 「0」.
Recurse? 「0」(이)라면 서브 폴더내는 검색하지 않는다.
「1」(이)라면 모든 서브 폴더를 재귀적으로 검색해, 패턴에 매치하는 것을 처리한다.
디폴트는 「0」.

Remarks

NTFS그럼, 파일은 이름순에 처리된다.
FAT그럼, 처리되는 차례는 부정.
파일의 풀 패스가259문자 이상의 파일은 무시된다.

처리 대상이 되어 있는 파일의 정보는, 이하의 편입 변수로서 참조할 수 있다.

A_LoopFileName 파일명(디렉토리 패스를 제외하다)
A_LoopFileExt 파일의 확장자(extension).
「.」(은)는 포함하지 않는다(례:「txt」)
A_LoopFileFullPath 파일의 풀 패스.
다만,FilePattern그리고 상대 패스를 지정했을 경우는, 이쪽도 상대 패스가 된다.
A_LoopFileLongPath 롱 파일 네임 형식의, 정식적 풀 패스.
A_LoopFileShortPath 파일의8.3형식이 짧은 패스.
다만,FilePattern그리고 상대 패스를 지정했을 경우는, 이쪽도 상대 패스가 된다.
NTFS그리고 숏패스의 생성을 무효로 하고 있는 경우, 이 변수는 비운다.
A_LoopFileShortName 8.3형식의 쇼트 파일 네임.
NTFS의 쇼트 파일 네임 생성이 무효가 되어 있는 등의 이유에 의해 취득에 실패했을 경우는,A_LoopFileName(와)과 같은 것이 된다.
A_LoopFileDir 파일이 있는 디렉토리.
다만,FilePattern그리고 상대 패스를 지정했을 경우는, 이쪽도 상대 패스가 된다.
A_LoopFileTimeModified 파일의 최종 갱신 일시.YYYYMMDDHH24MISS형식.
A_LoopFileTimeCreated 파일이 만들어진 일시.YYYYMMDDHH24MISS형식.
A_LoopFileTimeAccessed 파일의 최종 액세스 일시.YYYYMMDDHH24MISS형식.
A_LoopFileAttrib 파일의 속성.FileGetAttrib그리고 취득되는 것과 같다.
A_LoopFileSize 파일 사이즈(Byte단위).4기가바이트 이상의 사이즈에도 대응.
A_LoopFileSizeKB 파일의 사이즈(KB단위)
A_LoopFileSizeMB 파일의 사이즈(MB단위)

그 외의 사양은, 통상의Loop(와)과 같이.

Related

Loop, Break, Continue, Blocks, FileSetAttrib, FileSetTime

Example(s)

; Example #1:
Loop, %ProgramFiles%\*.txt, , 1  ; Recurse into subfolders.
{
	MsgBox, 4, , Filename = %A_LoopFileFullPath%`n`nContinue?
	IfMsgBox, No
		break
}

; Example #2: Calculate the size of a folder, including the files in all its subfolders:
SetBatchLines, -1  ; Make the operation run at maximum speed.
FolderSizeKB = 0
FileSelectFolder, WhichFolder
Loop, %WhichFolder%\*.*, , 1
	FolderSizeKB += %A_LoopFileSizeKB%
MsgBox Size of %WhichFolder% is %FolderSizeKB% KB.

; Example #3: Retrieve file names sorted by name (see next example to sort by date):
FileList =  ; Initialize to be blank.
Loop, C:\*.*
	FileList = %FileList%%A_LoopFileName%`n
Sort, FileList, R   ; The R option sorts in reverse order. See Sort for other options.
Loop, parse, FileList, `n
{
	if A_LoopField =  ; Ignore the blank item at the end of the list.
		continue
	MsgBox, 4,, File number %A_Index% is %A_LoopField%.  Continue?
	IfMsgBox, No
		break
}
; Example #4: Retrieve file names sorted by modification date:
FileList =
Loop, %UserProfile%\Recent\*.*, 1  ; UserProfile exists as an environment variable on some OSes.
	FileList = %FileList%%A_LoopFileTimeModified%`t%A_LoopFileName%`n
Sort, FileList  ; Sort by date.
Loop, parse, FileList, `n
{
	if A_LoopField =  ; Omit the last linefeed (blank item) at the end of the list.
		continue
	StringSplit, FileItem, A_LoopField, %A_Tab%  ; Split into two parts at the tab char.
	MsgBox, 4,, The next file (modified at %FileItem1%) is:`n%FileItem2%`n`nContinue?
	IfMsgBox, No
		break
}
; Example #5: Copy only the source files that are newer than their counterparts
; in the destination:
CopyIfNewer:
; Caller has set the variables CopySourcePattern and CopyDest for us.
Loop, %CopySourcePattern%
{
	copy_it = n
	IfNotExist, %CopyDest%\%A_LoopFileName%  ; Always copy if target file doesn't yet exist.
		copy_it = y
	else
	{
		FileGetTime, time, %CopyDest%\%A_LoopFileName%
		EnvSub, time, %A_LoopFileTimeModified%, seconds  ; Subtract the source file's time from the destination's.
		if time < 0  ; Source file is newer than destination file.
			copy_it = y
	}
	if copy_it = y
	{
		FileCopy, %A_LoopFileFullPath%, %CopyDest%\%A_LoopFileName%, 1   ; Copy with overwrite=yes
		if ErrorLevel <> 0
			MsgBox, Could not copy "%A_LoopFileFullPath%" to "%CopyDest%\%A_LoopFileName%".
	}
}
Return
; Example #6: Convert filenames passed in via command-line parameters to long names,
; complete path, and correct uppercase/lowercase characters as stored in the file system.
; This script requires v1.0.25+.
Loop %0%  ; For each file dropped onto the script (or passed as a parameter).
{
	GivenPath := %A_Index%  ; Retrieve the next command line parameter.
	Loop %GivenPath%
		LongPath = %A_LoopFileLongPath%
	MsgBox The case-corrected long path name of file`n%GivenPath%`nis:`n%LongPath%
}


AutoHotKey(오토핫키) 설명서 Loop

Posted by 발전소장
2014. 8. 14. 13:38 AutoHotKey/Commands

Loop

커멘드 혹은 블록을 지정 회수 혹은break등이 실행될 때까지 반복한다

Loop [, Count]

Parameters

인수명설명
Count 반복의 회수.
생략 했을 경우,break인가return인가Goto그리고 처리를 빠질 때까지 무한하게 반복한다.
「%Count%」(와)과 같은 변수 참조도 사용할 수 있다.
식은 사용할 수 없다.

Remarks

Loop커멘드의 후에는, 반드시 커멘드나 블록이 온다.

Loop안에서break커멘드가 실행되면, 반복을 빠져 반복 커멘드·블록의 다음의 행에 실행이 옮긴다.

Loop블록내에서Continue커멘드가 실행되면, 거기로부터 블록의 마지막까지의 처리가 스킵 되어 다음의 회에 진행된다.

반복의 회수는 짜넣어 변수 「A_Index」로서 참조할 수 있다.
A_Index(은)는, 반복의1번째에서는 「1」이다.
루프가2중이 되어 있을 때는, 안쪽의 회수를 취득할 수 있다.외측의 것을 참조하고 싶으면, 다른 변수에 퇴피해 둘 필요가 있다.
A_Index(은)는 루프의 밖에서는 「0」(이)가 된다.

인수에 숫자 이외의 것이 지정되었을 때, 특수한 루프가 된다.
파일 패스의 와일드 카드라면,File loop, 레지스트리의 루트 키명이라면Registry loop, 「Parse」(이)라면문자열 분할 루프, 「Read」(이)라면File-read loop.

Related

File loop, Registry loop, File-read loop, Parsing loop, Break, Continue, Blocks

Example(s)

Loop, 3
{
	MsgBox, Iteration number is %A_Index%.  ; A_Index will be 1, 2, then 3
	Sleep, 100
}

Loop
{
	if a_index > 25
		break  ; Terminate the loop
	if a_index < 20
		continue ; Skip the below and start a new iteration
	MsgBox, a_index = %a_index% ; This will display only the numbers 20 through 25
}


AutoHotKey(오토핫키) 설명서 Log()

Posted by 발전소장
2014. 8. 14. 13:38 AutoHotKey/Commands

Log()

주어진 수치의 상용대수(10(을)를 바닥으로 한 대수)(을)를 돌려주는 함수

Log(N)

Parameters

인수명설명
N진수를 지정한다

Remarks

인수가 수치가 아니었던 경우나, 계산 불능인 값이 주어졌을 경우는 길이 제로의 공문자열이 돌아간다.

Related

함수


AutoHotKey(오토핫키) 설명서 Ln()

Posted by 발전소장
2014. 8. 14. 13:37 AutoHotKey/Commands

Ln()

주어진 수치의 자연대수(네피아수e(을)를 바닥으로 한 대수)(을)를 돌려주는 함수

Ln(N)

Parameters

인수명설명
N진수를 지정한다

Remarks

인수가 수치가 아니었던 경우나, 계산 불능인 값이 주어졌을 경우는 길이 제로의 공문자열이 돌아간다.

Related

함수


AutoHotKey(오토핫키) 설명서 ListVars

Posted by 발전소장
2014. 8. 14. 13:37 AutoHotKey/Commands

ListVars

변수명과 변수의 내용을 일람표시

ListVars 

Remarks

스크립트가 사용한 변수명과 그 내용이 일람표 나타난다.
F5키를 누르면 최신의 정보로 갱신된다.

메인 윈도우의 「View」→「Variables」메뉴와 같다.

함수 중(안)에서 실행되었을 경우, 함수의 로컬 변수가 위에 표시된다.

리스트에는, 변수명, 변수의 길이, 변수에 확보되고 있는 기억 영역의 용량, 변수의 내용의 최초의60아르바이트가 표시된다.

Related

KeyHistory, ListHotkeys, ListLines

Example(s)

ListVars


AutoHotKey(오토핫키) 설명서 ListLines

Posted by 발전소장
2014. 8. 14. 13:36 AutoHotKey/Commands

ListLines

스크립트가 최근 실행한 커멘드를 표시

ListLines

Remarks

스크립트가 최근 실행한 커멘드를 표시.
F5키를 누르지 않는다고 표시는 갱신되지 않는다.
표시되는 행 번호는 대개 파일에 쓰여져 있는 행으로 일치하지만, 내용이 일부 차이가 나는 경우가 있다.

메인 윈도우의 「View」→「Lines most recently executed」메뉴와 같다.

Related

KeyHistory, ListHotkeys, ListVars

Example(s)

ListLines


AutoHotKey(오토핫키) 설명서 ListHotkeys

Posted by 발전소장
2014. 8. 14. 13:36 AutoHotKey/Commands

ListHotkeys

등록되어 있는 hot key의 정보를 일람표시

ListHotkeys

Remarks

등록되어 있는 hot key와 현재 유효할지, 키, 마우스 훅이 사용되고 있는지 어떤지,스렛드하지만 기동하고 있을지를 일람표시 한다.

메인 윈도우의 「View」→「Variables」메뉴와 같다.

Related

#InstallKeybdHook, #InstallMouseHook, #UseHook, KeyHistory, ListLines, ListVars, #MaxThreadsPerHotkey, #MaxHotkeysPerInterval

Example(s)

ListHotkeys


AutoHotKey(오토핫키) 설명서 KeyWait

Posted by 발전소장
2014. 8. 14. 13:36 AutoHotKey/Commands

KeyWait

키보드나 마우스, 죠이스틱의 버튼이 밀린다/떼어 놓아질 때까지 대기

KeyWait, KeyName [, Options]

Parameters

인수명설명
KeyName 문자 키의 문자나키 일람에 있는 키명.
죠이스틱의Joy1...Joy32이외의 요소는 사용 할 수 없다.
Options
이하의 것을 반각 스페이스 단락으로 지정.
D
눌러 내릴 수 있는 것을 기다린다(통상은 떼어 놓아지는 것을 기다린다)
L
강제적으로 논리적 판정을 사용
Tn
n에 대기하는 최대초수를 지정(례:T3).소수도 지정 가능.

ErrorLevel

T옵션으로 지정한 초수가 경과했을 경우 「1」, 그 이외는 「0」

Remarks

Options하지만 아무것도 지정되지 않았던 경우, 지정한 키가 떼어 놓아질 때까지 계속 쭉 대기한다.

WindowsNT계로 키보드/마우스 훅이 사용되고 있는 경우, 물리적인 키/버튼 상태(유저가 실제로 키/버튼을 누르고 있을까)에 의해서 판정된다.
#InstallKeybdHook(이)나#InstallMouseHook지령으로, 강제적으로 훅을 유효하게 하는 것이 가능.

상기의 조건에 들어맞지 않는 경우, 논리적인 상태로 판정된다.
이 경우,AutoHotkey의Send커멘드와 같은 프로그램에 의해서 생성된 조작에도 반응해 버린다.

대기중은 hot key나 타이머등에서 기동되었다스렛드하지만 끼어들 수 있다.

복수의 키가 지정 상태가 되는 것을 기다리게 한 싶은 경우는, 복수의KeyWait(을)를 연속해 실행하면 좋다

KeyWait,Control
KeyWait,Alt

복수의 키 중 어떤 것인가가 밀리는 것을 기다리고 싶은 경우는,Input커멘드를 사용한다

Related

Key List, GetKeyState, Input, KeyHistory, #InstallKeybdHook, #InstallMouseHook, ClipWait, WinWait

Example(s)

KeyWait, a  ; Wait for the A key to be released.
KeyWait, LButton, D  ; Wait for the left mouse button to be pressed down.
KeyWait, Joy1, D T3  ; Wait up to 3 seconds for the first joystick button to be pressed down.
KeyWait, LAlt, L  ; Wait for the left-alt key to be logically released.
; Hotkey example:
~Capslock::
KeyWait, Capslock  ; Wait for user to physically release it.
MsgBox You pressed and released the Capslock key.
return
; Remapping example:
; The left mouse button is kept held down while NumpadAdd is down,
; which effectively transforms NumpadAdd into the left mouse button.
*NumpadAdd::
MouseClick, left,,, 1, 0, D  ; Hold down the left mouse button.
KeyWait, NumpadAdd   ; Wait for the key to be released.
MouseClick, left,,, 1, 0, U  ; Release the mouse button.
return

; This example shows how to detect when a key has been double-pressed (similar to double-click):
; It relies on #MaxThreadsPerHotkey being at its default setting of 1.
~RControl::
if A_PriorHotkey <> ~RControl
{
	KeyWait, RControl
	return
}
if A_TimeSincePriorHotkey > 400 ; Too much time between presses, so this isn't a double-press.
{
	KeyWait, RControl
	return
}
MsgBox You double-pressed the right control key.
return


AutoHotKey(오토핫키) 설명서 KeyHistory

Posted by 발전소장
2014. 8. 14. 13:35 AutoHotKey/Commands

KeyHistory

키보드, 마우스의 조작 이력을 표시

KeyHistory

Remarks

입력된 조작의 키코드등을 조사할 수 있다.
hot key로키코드를 직접 지정하고 싶은 경우나,Send커멘드로 키코드 지정으로 키를 송신하고 싶은 경우는 여기서 조사하면 좋다.

메인 메뉴의 「View」→「Key history」와 같다.

#KeyHistory지령으로 기록하는 조작의 수를 설정할 수 있다.

유저가 입력한 조작을 표시하기 위해서는, 키보드 훅이나 마우스 훅을 유효하게 되어 있을 필요가 있다.
특정의 hot key를 등록하고 있으면, 자동적으로 훅은 유효하게 되지만, 확실히 훅을 유효하게 하려면 이하와 같이 한다.

#InstallKeybdHook
#InstallMouseHook

Related

#KeyHistory, #InstallKeybdHook, #InstallMouseHook, ListHotkeys, ListLines, ListVars

Example(s)

KeyHistory ; Display the history info in a window.


AutoHotKey(오토핫키) 설명서 IsLabel()

Posted by 발전소장
2014. 8. 14. 13:34 AutoHotKey/Commands

IsLabel()

라벨이 정의되고 있는지를 판별하는 함수

IsLabel("LabelName")

Parameters

인수명설명
"LabelName"존재할지를 조사하고 싶은 라벨명을 문자열로 지정한다.

Remarks

「Gosub,%LabelName%」(와)과 같은 동적 라벨명을 이용해 점프 할 때, 해당 라벨이 존재할지를 조사하기 위해서 사용한다.

해당 라벨에 점프 할 수 할 수 없어도, 스크립트의 어디엔가 라벨이 존재하면 「1」(이)가 돌려주어진다.
예를 들면, 타처의 함수내에서 정의되고 있는 라벨 등이다.

Related

GoSub, GoTo

Examples

if(IsLabel("Label")){
	GoSub,Label
}

Label:
MsgBox,This is Subroutine
return