FileSelectFile

사용자가 파일을 열거나 저장할 수 있는 표준 대화상자를 보여줍니다.

FileSelectFile, OutputVar , Options, RootDir\Filename, Title, Filter

매개변수

OutputVar

The name of the output variable in which to store the filename(s) selected by the user. 사용자가 취소를 하면 (즉, 파일을 선택하지 않으면) 이 값은 비워집니다.

Options

생략하면, 0이 기본값이 됩니다. 아래 옵션을 하나도 지정하지 않은 것과 같습니다.

M: 다중-선택. 기호 M을 지정하면 사용자는 shift-click, control-click, 또는 기타 수단을 통하여 파일을 하나 이상 선택할 수 있습니다. M은 선택적으로 다음에 숫자가 아래와 같이 따라 올 수 있습니다 (예를 들어, M과 M1은 모두 유효합니다). 개별적으로 파일을 추철하려면, 이 페지이 하단의 예제를 참조하십시오.

S: Save dialog. 기호 S를 지정하면 대화상자가 언제나 Open 대신에 Save 버튼을 보여줍니다. S는 선택적으로 다음에 숫자가 (또는 숫자들의 합)이 아래에 기술하는 바와 같이 (예를 들어, S와 S16는 모두 유효합니다) 따라 올 수 있습니다.

MS가 없더라도, 다음 숫자는 사용할 수 있습니다. 여러 숫자를 지정하려면, 합쳐서 지정하면 됩니다. 예를 들어 1과 2을 지정하려면, 숫자 3를 지정합니다.

1: 파일이 존재해야 함
2: 경로가 존재해야 함
8: 새 파일을 만들 프롬프트
16: 파일을 덮어쓸 프롬프트
32 [v1.0.43.09+]: 단축파일 (.lnk)은 목표로 결정되지 않고 그대로 선택됩니다. 이 옵션은 또 폴더 단축키를 통하여 폴더를 항하지 못하도록 막습니다.

As the "Prompt to Overwrite" option is supported only by the Save dialog, specifying that option without the "Prompt to Create" option also puts the "S" option into effect. Similarly, the "Prompt to Create" option has no effect when the "S" option is present. Specifying the number 24 enables whichever type of prompt is supported by the dialog.

RootDir\Filename

존재하면, 이 매개변수는 다음 중 하나를 담고 있습니다:

RootDir: 루트 (시작) 디렉토리, 절대 경로를 지정하지 않으면 %A_WorkingDir%에 있는 하위폴더라고 간주합니다. 생략하거나 비어 있으면, 시작 디렉토리는 OS 버전에 따라 기본값이 결정됩니다 (앞에서 FileSelectFile을 사용하는 동안 사용자가 가장 최근에 선택한 디렉토리가 될 가능성이 높습니다). [v1.0.43.10+]: Windows XP/2003 이전의, ::{20d04fe0-3aea-1069-a2d8-08002b30309d} (즉, 내 컴퓨터)와 같은 CLSID도 지정할 수 있습니다. 이 경우 CLSID 뒤에 나타나는 하위디렉토리가 나타나면 모두 역사선으로 끝나야 합니다 (그렇지 않으면, 마지막 역사선 다음의 문자열은 아래와 같이 기본 파일 이름으로 번역됩니다).

Filename: 대화상자의 편집 필드에 처음에 보여줄 기본 파일이름. (경로 없는) 날 파일이름만 보여줍니다. 대화상자가 올바르게 보여지도록 확인하려면, 유효하지 않은 문자들이 나타나지 않도록 확인하십시오 (예를 들어 /<|:").

예제:

C:\My Pictures\Default Image Name.gif  ; RootDirFilename 모두 나타납니다.
C:\My Pictures  ; RootDir만 나타납니다.
My Pictures  ; RootDir만 나타나고, 그의 위치는 현재 작업 디렉토리에 상대적입니다.
My File  ; Filename만 나타납니다 (그러나 "My File"이 폴더로 존재하면,  RootDir에 있다고 간주됩니다).
Title

The title of the file-selection window. 생략하거나 비어 있으면, 기본값은 "Select File - %A_ScriptName%" (즉, 현재 스크립트의 이름)이 됩니다.

Filter

대화상자에 어떤 유형의 파일을 보여줄지 나타냅니다.

예제: Documents (*.txt)
예제: Audio (*.wav; *.mp2; *.mp3)

생략하면, 필터 기본값은 모든 파일 (*.*)이 됩니다. 텍스트 문서 (*.txt)를 위한 옵션도 대화상자의 "파일의 종류" 메뉴에 사용할 수 있습니다.

그렇지 않으면, 필터는 지시된 문자열을 사용하고 또 대화상자의 "파일 유형" 드롭-다운 리스트에 모든 파일 (*.*)에 대한 옵션도 제공합니다. 필터에 여러 파일 확장자를 포함하려면 위에서 예시한 바와 같이 사이를 쌍반점으로 분리하십시오.

에러 처리

[v1.1.04+]: 이 명령어는 실패하면 예외를 던질 수 있습니다. 더 자세한 정보는 실행시간 에러를 참조하십시오.

ErrorLevel은 사용자가 파일 선택없이 대화상자를 취소하면 (예를 들어 취소 버튼을 누르면) 1이 설정됩니다. 시스템이 대화상자를 보여주기를 거부하는 경우에도 1이 설정됩니다 (거의 없음). 그렇지 않으면 0이 설정됩니다.

논평

A file-selection dialog usually looks like this:

FileSelectFile

사용자가 아무 것도 선택하지 않았다면 (예, CANCEL 누름), OutputVar는 비워집니다.

다중-선택이 꺼져 있으면, OutputVar은 사용자가 선택한 단일 파일의 전체 경로와 이름이 설정됩니다.

M 옵션 (다중-선택)이 켜져 있으면, OutputVar는 항목 리스트가 설정됩니다. 마지막을 제외하고 각 항목은 라인피드 (`n) 문자로 끝납니다. 리스트에서 첫 항목은 선택된 모든 파일을 담은 경로입니다 (이 경로는 C:\와 같이 루트 폴더일 때만 역사선으로 끝납니다). 다른 항목은 선택된 파일이름들입니다 (경로 없음). 예를 들어:

C:\My Documents\New Folder [아래의 모든 파일이 거주하는 경로입니다]
test1.txt [맨 파일이름입니다: 경로 없음]
test2.txt
... 등등.

(이 페이지 하단의 예제에서 이 파일들을 하나씩 추출하는 법을 보여줍니다.)

다중-선택이 켜져 있으면, 선택된 파일 이름의 길이의 합은 64 KB로 제한됩니다. 이 정도면 보통 수 천 개의 파일을 담을 정도로 충분하지만, 그 한계를 초과하면 OutputVar는 비워집니다.

GUI 창은 Gui +OwnDialogs를 사용하여 모달 파일-선택 대화상자를 보여줄 수도 있습니다. 모달 대화상자는 끝날 때까지 사용자가 GUI 창과 상호작용하는 것을 막습니다.

알려진 한계: FileSelectFile 대화상자를 보여주는 동안에 기동한 타이머는 사용자가 대화상자 안에 클릭한 것을 타이머가 끝날 때까지 연기합니다. 이를 우회하려면, 끝나는데 시간이 많이 걸리는 서브루틴의 타이머를 피하거나, 모든 타이머를 모달 대화상자를 사용하는 동안에는 끄십시오:

Thread, NoTimers
FileSelectFile, OutputVar
Thread, NoTimers, false

[v1.0.25.06+]: 서 다중-선택 옵션 "4"는 폐기되었습니다. 그렇지만, 예전 스크립트와의 호환을 위해, 여전히 예전과 같이 작동합니다. 특히, 사용자가 오직 파일을 하나만 선택하면, OutputVar에 전체 경로와 이름 그리고 다음에 라인피드 문자(`n)가 담깁니다. 사용자가 여러 파일을 선택하면, 그 형식은 위에 기술한 M 옵션을 사용한 것과 같습니다. 단, 마지막 항목도 역시 라인피드로 (`n) 끝나는 점이 다릅니다.

FileSelectFolder, MsgBox, InputBox, ToolTip, GUI, CLSID List, 파싱 회돌이, SplitPath

또한, 운영 체제는 사용자가 글꼴이나 색깔, 또는 아이콘을 선택할 수 있는 표준 대화상자를 제공합니다. 이런 대화상자는 DllCall()을 통하여 보여줄 수 있습니다. 다음에 예시합니다: GitHub.

예제

Allows the user to select an existing .txt or .doc file.

FileSelectFile, SelectedFile, 3, , Open a file, Text Documents (*.txt; *.doc)
if (SelectedFile = "")
    MsgBox, 사용자가 아무 것도 선택하지 않았습니다.
else
    MsgBox, 사용자가 다음 파일을 선택했습니다:`n%SelectedFile%

A CLSID example. Allows the user to select a file in the recycle bin. Note that this example only works on Windows XP/2003 or earlier.

FileSelectFile, OutputVar,, ::{645ff040-5081-101b-9f08-00aa002f954e}  ; 휴지통.

Allows the user to select multiple existing files.

FileSelectFile, files, M3  ; M3 = 기존의 파일을 다중 선택합니다.
if (files = "")
{
    MsgBox, 사용자가 취소 버튼을 눌렀습니다.
    return
}
Loop, parse, files, `n
{
    if (A_Index = 1)
        MsgBox, 선택된 파일은 모두  %A_LoopField% 안에 포함되어 있습니다.
    else
    {
        MsgBox, 4, , 다음 파일은 %A_LoopField%입니다.  계속할까요?
        IfMsgBox, No, break
    }
}
return