# 使用元数据重命名

您可以使用元数据（关于文件的信息）通过在新的名称字段中使用各种元数据插入代码来构建文件的新的名称。

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

在这个例子中，MP3 文件的原始名称没有提供关于其内容的信息（*01.mp3*，*02.mp3* 等等）。幸运的是，MP3 文件通常包含描述音乐的元数据。我们不仅使用这些元数据来重命名文件，而且使用它们将音乐整理到文件夹中。

单击**新名称**字段左侧的下拉按钮，以显示 Opus 支持的所有元数据字段列表。

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

这些字段与您可以添加为文件列表列的字段相同。当您从该菜单中选择一个列（或选择出现在菜单底部的特殊重命名专用选项）时，相应的代码将自动插入到新名称字段中的当前光标位置。

在上面的例子中，我们使用了四个与音乐相关的字段：

* `{mp3artist}` 用于检索艺术家名称（*Nick Cave and the Bad Seeds*）。
* `{mp3album}` 用于专辑名称（*Abattoir Blues* - 我应该补充说，这是一张很棒的专辑）。
* `{mp3track}` 用于专辑中的曲目编号。
* `{mp3title}` 用于歌曲的实际名称。

我们在这些字段之间插入的反斜杠具有将文件移动到子文件夹（相对于当前文件夹）以及重命名的效果。如果子文件夹不存在，则会自动创建它们。

[列关键字](https://chaoses-ib.gitbook.io/directory-opus/guan-fang-shou-ce/readme.zh-10/readme.zh-6/keywords_for_columns.zh) 页面包含可由**重命名**函数使用的关键字的完整列表。

### 重命名的附加代码

除了完整的列列表外，以下代码还可以在**新名称**字段中使用：

* `[#]`：标记自动递增编号在文件名中插入的位置（当**编号**操作处于开启状态时）。
* `{parent}`：正在重命名的文件的父文件夹的名称。**重命名选定子文件夹中的文件**选项会影响 `{parent}` 返回的名称 - 如果重命名操作递归进入子文件夹，则 `{parent}` 将返回该子文件夹中文件的名称。
* `{parent2}`：二级父文件夹（即父文件夹的父文件夹）。
* `{parent3}`：三级父文件夹，依此类推。
* `{parentbase}`（基本文件夹）：此代码类似于 `{parent}`，但它返回基本文件夹的名称，而不是文件父文件夹的名称 - 也就是说，重命名操作开始所在的文件夹。这在递归重命名中最有用，因为 `{parent}` 返回的名称会在子文件夹内的文件发生变化。
* `{parentbase2}`：基本文件夹的父文件夹，依此类推。
* `{date}` 或 `{time}`：本地时区中的当前日期或时间。
* `{dateu}` 或 `{timeu}`：UTC 中的当前日期或时间。
* `{= ... =}`：插入[求值器表达式](https://chaoses-ib.gitbook.io/directory-opus/guan-fang-shou-ce/readme.zh-9/readme.zh/rename.zh)的值。

`{parent}` 和 `{parentbase}` 代码还可以从父名称中剥离文件扩展名，如果父文件夹是压缩包文件，则通常如此。为此，请在代码中添加 `|noext`（例如 `{parentbase|noext}`）。

如果您想使用重命名将文件移动到新文件夹，在新的名称开头添加 `$.\` 使每个文件相对于基本文件夹而不是其父文件夹移动。

可以使用 `{name|noext}` 检索原始文件名，但不包括文件扩展名。

### 合法的文件名

有时元数据可能包含文件名中无效的字符。例如，**{time}** 字段通常使用冒号（*HH:MM:SS*）格式化时间，而冒号不是合法的文件名字符。默认情况下，非法字符将转换为最接近的合法备选字符（例如，冒号将转换为分号）。但是，您可能希望自己控制此过程：

### 日期和时间字段

日期和时间字段允许您配置日期格式、时间格式或两者。例如：

* `{datetaken|D#yyyy-MM-dd}`：仅以 **yyyy-MM-dd** 格式（例如 *2008-09-22*）插入日期。
* `{modified|T#HH-mm-ss}`：以 **HH-mm-ss** 格式（例如 *13:10:55*）插入修改时间。
* `{datetaken|D#yyyyMMddT#HHmmss}`：将日期和时间都插入为 **yyyyMMddHHmmss**（例如 *20051130154410*）。

正如您在示例中看到的那样，`D#` 用于标记日期格式，`T#` 用于标记时间格式。有关日期和时间格式的信息，请参见[日期和时间代码](https://chaoses-ib.gitbook.io/directory-opus/guan-fang-shou-ce/readme.zh-10/readme.zh-2/readme.zh-1/codes_for_date_and_time.zh) 页面。

### 数字字段

数字字段允许您控制零填充。例如：

* `{size|#8}`：将字节大小零填充到八位（例如 *00045412*）。
* `{mp3track|#2}`：将曲目编号零填充到两位（例如 *08*）。

### 包含文字元数据代码

如果出于某种原因您想在新的文件名中按字面意义包含元数据代码（例如，您确实想将文件命名为 *Blah{size}*），您可以使用另一个 `{` 字符转义前导 `{` 字符。例如，`{{size}` 作为新的名称会将文字字符串 `{size}` 添加到每个文件的名称中。
