> For the complete documentation index, see [llms.txt](https://chaoses-ib.gitbook.io/directory-opus/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://chaoses-ib.gitbook.io/directory-opus/guan-fang-shou-ce/readme.zh-10/readme.zh-2/readme.zh-1/codes_to_display_dialogs.zh.md).

# 对话框显示代码

运行命令时可以使用以下代码来显示各种简单的对话框。这让你可在“运行时”提供信息（如选择文件或文件夹或输入字符串）,而不是将值合并到命令本身中。为了更灵活地进行操作,你可以使用 [脚本文本框](#/Manual/scripting/script_dialogs/README.zh.md)。

| 长格式           | 短格式  | 描述                                                   |
| ------------- | ---- | ---------------------------------------------------- |
| {dlgopen}     | {Rf} | 显示**打开文件**对话，可用于选择现有的文件名，并将其传递到命令。                   |
| {dlgmulti}    | {Rm} | 在多选模式下显示**打开文件**对话，可用于选择一个或多个现有文件。                   |
| {dlgsave}     | {RF} | 显示**保存文件**对话，可用于输入新的文件名，并将其传递到命令。                    |
| {dlgfolder}   | {Rd} | 显示**选择文件夹**对话，可用于选择文件夹，并将其传递到命令。                     |
| {dlgstring}   | {Rs} | 显示一个对话，可让你输入任意字符串。                                   |
| {dlgstringS}  | {RS} | 与`{dlgstring}`相同，但字符串字段的内容会自动选中（仅在指定了默认值的情况下适用，见下文）。 |
| {dlgpassword} | {Rp} | 与`{dlgstring}`相同，但字符串字段的内容会模糊显示，这对于输入密码很有用。          |
| {dlgchoose}   | {Rc} | 显示一个下拉列表，可让你从值列表中进行选择。                               |
| {dlgchooseS}  | {RC} | 与`{dlgchoose}`相同，但值列表会自动排序。                          |

### {dlgopen}、{dlgmulti}、{dlgsize}的参数

这些代码的模板是`{code|<title>|<default>}`。

\*\<title>*指定对话框的标题（未提供时将使用默认标题），*\<default>\*指定默认文件名。

例如，`{dlgopen|Select filename|dopus.txt}`将标题设置为**选择文件名**，默认文件名设置为**dopus.txt**。

对于`{dlgopen}`和`{dlgmulti}`，你可以为\*\<default>\*指定通配符，以设置文件对话框的过滤器类型。

例如，`{dlgopen||*.jpg;*.bmp;*.gif}`将保留对话框标题为其默认设置，并将对话框设置为对\*\*.jpg\*\*、**.bmp**和\*\*.gif\*\*文件进行过滤。

对于`{dlgsave}`，你可以指定一个附加参数来填充保存对话框中的“另存为类型”下拉列表。

例如，`{dlgsave|Title|Default Name.txt|type=#Text Files!*.txt!Doc Files!*.doc}`。

\*\*type=\*\*后的`#`将会使默认的“所有文件”项添加到下拉列表中，如果你不想要这个，请去掉`#`。

在此之后是一对或多对字符串，用感叹号（`!`）分隔。每对的第一个字符串是下拉列表中显示的纯文本字符串，每对的第二个字符串是实际的文件扩展名。你还可以通过分号分隔来为一个类型指定多个扩展名，例如: `type=JPEG Files!*.jpg;*.jpeg`。

这些代码还支持[用于传递文件名的代码](/directory-opus/guan-fang-shou-ce/readme.zh-10/readme.zh-2/readme.zh-1/codes_for_passing_filenames.zh.md)下列出的修饰符。要使用这些修饰符，你还必须包含\*\<title>*和*\<default>\*参数（如果需要，可以留空）。

例如，`{dlgopen|||noext}`会从选定的文件名中去掉扩展名。

### {dlgfolder}的参数

此代码的模板是`{dlgfolder|<title>|<default>}`。

\*\<title>*指定对话框的标题（未提供时将使用默认标题），*\<default>\*指定默认文件名。

例如，`{dlgfolder|Select folder|C:\Users}`将标题设置为**选择文件夹**，初始选定的文件夹将是**C:\Users**。

此代码支持[用于传递路径的代码](/directory-opus/guan-fang-shou-ce/readme.zh-10/readme.zh-2/readme.zh-1/codes_for_passing_paths.zh.md)下列出的修饰符。要使用这些修饰符，你还必须包含\*\<title>*和*\<default>\*参数（如果需要，可以留空）。同样还支持另外一个修饰符`expand`。这会导致初始选定的文件夹自动展开。

例如，`{dlgfolder||C:\Program Files|expand}`将会把**C:\Program Files**设置为默认文件夹，并自动在显示的对话框中将其展开。

### {dlgstring}、{dlgstringS}和{dlgpassword}的参数

这些代码的模板是`{code|<message>|<default>}`。

\*\<message>*指定在对话框中显示的消息，*\<default>\*指定字符串字段的默认值。

你可以使用特殊代码在消息文本中包含换行符（如果你需要在文本中插入一个字面序列，则必须转义`\\`字符，如`\`）。

![](https://3597805814-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3XSZSwWow0fDf6fQJobd%2Fuploads%2Fgit-blob-b85188147269a32757a7ae6bc27b2d0423730bed%2Fdlgstring.png?alt=media)

例如，`{dlgstring|Please enter the string.\nThen click OK.|default string}`。

如果希望用户输入的任何引号字符加倍（“`"`变成`""`），则可以使用可选的`doublequotes`修饰符。它必须紧跟在\`\*\<default>\*参数的后面，如果该参数没有被使用，则该参数应该为空。加倍引号允许用户在命令参数中包含引号字符，前提是参数本身带有明确的引号。

例如，`SetAttr META "comment:{dlgstring|Enter Comment||doublequotes}"`

此外，`{dlgpassword}`接受一个可选的`confirm`修饰符，它也必须紧跟在\`\*\<default>\*参数的后面。如果指定了此参数，则对话框将显示两个密码字段，在启用确定按钮之前，你必须在这两个字段中输入相同的值（作为确认）。

例如，`{dlgpassword|Please enter your password twice.||confirm}`。

如果需要同时使用`doublequotes`和`confirm`，则可以按任何顺序指定它们。

例如，`{dlgpassword|Please enter your password twice.||confirm|doublequotes}`。

### {dlgchoose}、{dlgchooseS}的参数

这些代码的模板是`{code|<message>|<option 1>[=<value 1>][+<option 2>[=<value 2>]...]}`。

\*\<message>\*指定在对话框中显示的消息。你可以使用特殊代码在消息文本中包含换行符（如果你需要在文本中插入一个字面序列，则必须转义`\\`字符，如）。

\*\<option 1>*是下拉列表中第一个选项显示的文本，*\<option 2>\*是第二个选项，依此类推。多个选项用`+`号分隔。

*\<value 1>是与第一个选项关联的可选值。如果提供了此值，则option*将显示在下拉列表中，*value*是通过命令行传递的值。如果未提供*value*，则*option*文本将同时用于*option*和*value*。

你可以通过在它之前添加`default:`来指定默认选定的选项；否则，第一个选项（排序后）将成为初始选择。你还可以使用`notdefault:`前缀，如果需要使用`default:`或`notdefault:`作为字面量前缀，则只会被删除。 ![](https://3597805814-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3XSZSwWow0fDf6fQJobd%2Fuploads%2Fgit-blob-810335c55df296f0dc9610a27412d8289a79666d%2Fdlgchoose.png?alt=media)

例如，`{dlgchoose|选择编码质量|default:High=320+Medium=256+Low=128}` 会向下拉列表中添加选项 **High**、**Medium** 和 **Low**，其中 **High** 为初始选择，并将值 **320**、**256** 或 **128**（分别）传递到命令行。

如果您需要在选项名称或其值中包含 `+` 或 `=` 字符，可以通过将字符加倍来实现。
