# 剪贴板

详见 [Clipboard](https://chaoses-ib.gitbook.io/directory-opus/guan-fang-shou-ce/readme.zh-10/readme.zh-2/readme.zh/clipboard.zh) 命令。

## 复制文件名、路径

DOpus 自带有复制文件名和路径的功能，可以通过上下文菜单、工具栏或热键触发：

![](https://3597805814-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3XSZSwWow0fDf6fQJobd%2Fuploads%2Fgit-blob-57e088fcb5c929342d3f312118fcc08654dd9518%2F%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%E4%B8%8E%E6%96%87%E4%BB%B6%E5%A4%B9-%E5%8F%B3%E9%94%AE%E8%8F%9C%E5%8D%95.png?alt=media)

![](https://3597805814-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3XSZSwWow0fDf6fQJobd%2Fuploads%2Fgit-blob-fa1c7eafe2ebd3fac0d6bf3a0b69d8764976d1bb%2F%E5%A4%8D%E5%88%B6%E5%85%B6%E5%AE%83.png?alt=media)

其中工具栏除了支持常规的文件名和路径格式外，还支持以下格式：

* 8.3 短文件名/路径：例如 `C:\PROGRA~1\WINDOW~3`
* URL 路径：例如 `file:///C:/Windows`、`file:///C:/Program%20Files%20(x86)`
* 双反斜杠路径：例如 `C:\\Windows`

### 正斜杠路径

如果想复制为正斜杠路径格式，例如 `C:/Windows`，可以使用以下命令：

```cmd
Clipboard COPYNAMES=unc REGEXP (.*)\\(.*)# \1/\2
```

按钮（可粘贴到工具栏）：

```xml
<?xml version="1.0"?>
<button backcol="none" display="both" hotkey_label="yes" label_pos="right" textcol="none">
	<label>复制完整路径（正斜杠）</label>
	<tip>复制所有选定文件的完整路径到剪贴板</tip>
	<icon1>#copyfilenames</icon1>
	<function type="normal">
		<instruction>Clipboard COPYNAMES=unc REGEXP (.*)\\(.*)# \1/\2</instruction>
	</function>
</button>
```

### 环境变量、文件夹别名相对路径

相较于绝对路径，环境变量、文件夹别名相对路径的兼容性更好，可以在不同环境下使用。可以通过安装 [ClipEdit 脚本](https://github.com/Chaoses-Ib/IbDOpusScripts/blob/main/Commands/ClipEdit.js)，使用 `ClipEdit` 命令来支持这些格式：

* 环境变量相对路径：例如 `%systemroot%\notepad.exe`（完整路径为 `C:\Windows\notepad.exe`）

  命令：

  ```cmd
  Clipboard COPYNAMES=unc
  ClipEdit ENVVAR
  ```

  按钮（可粘贴到工具栏）：

  ```xml
  <?xml version="1.0"?>
  <button backcol="none" display="both" hotkey_label="yes" label_pos="right" textcol="none">
    <label>复制完整路径（环境变量）</label>
    <tip>复制所有选定文件的完整路径到剪贴板</tip>
    <icon1>#copyfilenames</icon1>
    <function type="normal">
      <instruction>Clipboard COPYNAMES=unc</instruction>
      <instruction>ClipEdit ENVVAR</instruction>
    </function>
  </button>
  ```
* 文件夹别名相对路径：例如 `/windows\notepad.exe`（完整路径为 `C:\Windows\notepad.exe`）

  对于 DOpus 内部路径，使用文件夹别名可以大幅缩短路径长度，例如可以将 `C:\Users\Alice\AppData\Roaming\GPSoftware\Directory Opus\Script AddIns\ClipEdit.js` 缩短为 `/scripts\ClipEdit.js` 。

  命令：

  ```cmd
  Clipboard COPYNAMES=unc
  ClipEdit ALIAS
  ```

  按钮（可粘贴到工具栏）：

  ```xml
  <?xml version="1.0"?>
  <button backcol="none" display="both" hotkey_label="yes" label_pos="right" textcol="none">
    <label>复制完整路径（别名）</label>
    <tip>复制所有选定文件的完整路径到剪贴板</tip>
    <icon1>#copyfilenames</icon1>
    <function type="normal">
      <instruction>Clipboard COPYNAMES=unc</instruction>
      <instruction>ClipEdit ALIAS</instruction>
    </function>
  </button>
  ```
* 环境变量/文件夹别名相对路径：先尝试使用环境变量，再尝试文件夹别名

  命令：

  ```cmd
  Clipboard COPYNAMES=unc
  ClipEdit ENVVAR
  ClipEdit ALIAS
  ```

  按钮（可粘贴到工具栏）：

  ```xml
  <?xml version="1.0"?>
  <button backcol="none" display="both" hotkey_label="yes" label_pos="right" textcol="none">
    <label>复制完整路径（环境变量/别名）</label>
    <tip>复制所有选定文件的完整路径到剪贴板</tip>
    <icon1>#copyfilenames</icon1>
    <function type="normal">
      <instruction>Clipboard COPYNAMES=unc</instruction>
      <instruction>ClipEdit ENVVAR</instruction>
      <instruction>ClipEdit ALIAS</instruction>
    </function>
  </button>
  ```

## 粘贴为文件

当向 DOpus 的文件列表中粘贴文本或图片时，DOpus 会自动以文件的形式将粘贴内容保存。

当粘贴文本时，DOpus 对于只含 ASCII 字符的文本默认会使用 ANSI 编码（等效于 ASCII 编码），对于其它文本则会使用 UTF-16 LE 编码。简单地说，英文文本会被使用一种通用编码进行保存，中文文本则会被使用一种不常见的编码进行保存。在高级选项中可以指定默认文本编码：

![](https://3597805814-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3XSZSwWow0fDf6fQJobd%2Fuploads%2Fgit-blob-a033eb723ff477f3cd0861dc7962095553a8b9ce%2F%E5%89%AA%E8%B4%B4%E6%9D%BF-%E6%96%87%E6%9C%AC%E7%BC%96%E7%A0%81.png?alt=media)

推荐使用更通用的 `utf8` 作为默认编码。

当粘贴图片时，DOpus 默认会使用 JPEG 格式。默认图片格式也可以在高级选项中进行更改：

![](https://3597805814-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3XSZSwWow0fDf6fQJobd%2Fuploads%2Fgit-blob-7028bc5d1b5f3da4b66125a738c7277460d8cb9c%2F%E5%89%AA%E8%B4%B4%E6%9D%BF-%E5%9B%BE%E7%89%87%E6%A0%BC%E5%BC%8F.png?alt=media)

尽管压缩率较高，但 JPEG 是一种有损压缩格式，如果希望在粘贴时保留原始图片，推荐使用 PNG 格式作为默认格式。

除了高级设置外，也可以通过 `Clipboard` 命令进行自定义粘贴，比如在每次粘贴时都询问文本编码和图片格式：

```cmd
// 默认文件名可省略（AS=ask）
Clipboard PASTE AS=ask:默认文件名
```

![](https://3597805814-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3XSZSwWow0fDf6fQJobd%2Fuploads%2Fgit-blob-5702b276acccfbf793949c017316fb6c0464aae9%2FClipboard%20AS%3Dask%20%E6%96%87%E6%9C%AC.png?alt=media)

![](https://3597805814-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3XSZSwWow0fDf6fQJobd%2Fuploads%2Fgit-blob-ec74d88ae3695dcc44e8642597978e2fb803b655%2FClipboard%20AS%3Dask%20%E5%9B%BE%E7%89%87.png?alt=media)
