pub struct QueryBuilder<'et> { /* private fields */ }Expand description
查询构建器
Implementations§
Source§impl<'et> QueryBuilder<'et>
impl<'et> QueryBuilder<'et>
Sourcepub fn include_unknown(self, yes: bool) -> Self
pub fn include_unknown(self, yes: bool) -> Self
包含未知标签
Sourcepub fn include_duplicates(self, yes: bool) -> Self
pub fn include_duplicates(self, yes: bool) -> Self
包含重复标签
Sourcepub fn raw_values(self, yes: bool) -> Self
pub fn raw_values(self, yes: bool) -> Self
显示原始数值(而非格式化后的值)
Sourcepub fn group_by_category(self, yes: bool) -> Self
pub fn group_by_category(self, yes: bool) -> Self
按类别分组(-g1 选项)
Sourcepub fn no_composite(self, yes: bool) -> Self
pub fn no_composite(self, yes: bool) -> Self
禁用复合标签生成
使用 -e 选项禁用复合标签(Composite tags)的生成。
复合标签是由 ExifTool 根据其他标签计算得出的派生标签。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 只读取原始标签,不生成复合标签
let metadata = exiftool.query("photo.jpg")
.no_composite(true)
.execute()?;Sourcepub fn extract_embedded(self, level: Option<u8>) -> Self
pub fn extract_embedded(self, level: Option<u8>) -> Self
提取嵌入文件信息
使用 -ee 选项从文件中提取嵌入的文件信息。
例如从 RAW 文件中提取 JPEG 预览图的元数据。
§级别
None- 不提取嵌入文件(默认)Some(1)--ee提取直接嵌入的文件Some(2)--ee2提取所有层级的嵌入文件Some(3+)--ee3及以上更深入的提取
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 提取嵌入文件信息
let metadata = exiftool.query("photo.raw")
.extract_embedded(Some(1))
.execute()?;Sourcepub fn extension(self, ext: impl Into<String>) -> Self
pub fn extension(self, ext: impl Into<String>) -> Self
设置文件扩展名过滤
使用 -ext 选项只处理指定扩展名的文件。
可以使用多次来指定多个扩展名。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 只处理 jpg 文件
let metadata = exiftool.query("/photos")
.extension("jpg")
.recursive(true)
.execute()?;
// 处理多个扩展名
let metadata = exiftool.query("/photos")
.extension("jpg")
.extension("png")
.extension("raw")
.recursive(true)
.execute()?;Sourcepub fn ignore(self, dir: impl Into<String>) -> Self
pub fn ignore(self, dir: impl Into<String>) -> Self
设置要忽略的目录
使用 -i 选项忽略指定的目录名称。
在递归处理时,匹配的目录将被跳过。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 忽略 .git 和 node_modules 目录
let metadata = exiftool.query("/project")
.ignore(".git")
.ignore("node_modules")
.recursive(true)
.execute()?;Sourcepub fn recursive(self, yes: bool) -> Self
pub fn recursive(self, yes: bool) -> Self
递归处理子目录
使用 -r 选项递归处理目录中的所有文件。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 递归处理整个目录树
let metadata = exiftool.query("/photos")
.recursive(true)
.extension("jpg")
.execute()?;Sourcepub fn progress(
self,
interval: Option<u32>,
title: Option<impl Into<String>>,
) -> Self
pub fn progress( self, interval: Option<u32>, title: Option<impl Into<String>>, ) -> Self
启用进度显示
使用 -progress 选项在处理文件时显示进度信息。
可以指定间隔(每隔多少文件显示一次)和标题。
§参数
interval- 每隔多少文件显示一次进度(None 表示每个文件都显示)title- 进度信息的标题(可选)
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 每 10 个文件显示一次进度
let metadata = exiftool.query("/photos")
.recursive(true)
.progress(Some(10), Some("Processing"))
.execute()?;添加多个标签查询
Sourcepub fn exclude_id(self, tag: TagId) -> Self
pub fn exclude_id(self, tag: TagId) -> Self
排除特定标签(使用 TagId)
Sourcepub fn coord_format(self, format: impl Into<String>) -> Self
pub fn coord_format(self, format: impl Into<String>) -> Self
设置 GPS 坐标格式
使用 -c 选项设置 GPS 坐标的输出格式
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 使用小数度格式
let metadata = exiftool.query("photo.jpg")
.coord_format("%.6f")
.execute()?;
// 使用度分秒格式
let metadata = exiftool.query("photo.jpg")
.coord_format("%d deg %d' %.2f\"")
.execute()?;Sourcepub fn date_format(self, format: impl Into<String>) -> Self
pub fn date_format(self, format: impl Into<String>) -> Self
设置日期/时间格式
使用 -d 选项设置日期/时间值的输出格式
§预设格式
"%Y:%m:%d %H:%M:%S"- 标准 EXIF 格式(默认)"%Y-%m-%d"- ISO 日期格式"%c"- 本地时间格式"%F %T"- ISO 8601 格式
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 使用 ISO 格式
let metadata = exiftool.query("photo.jpg")
.date_format("%Y-%m-%d %H:%M:%S")
.execute()?;Sourcepub fn args_file(self, path: impl Into<String>) -> Self
pub fn args_file(self, path: impl Into<String>) -> Self
从文件读取参数
对应 ExifTool 的 -@ 选项,从指定文件中读取命令行参数,
每行一个参数。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
let metadata = exiftool.query("photo.jpg")
.args_file("args.txt")
.execute()?;Sourcepub fn csv_delimiter(self, delim: impl Into<String>) -> Self
pub fn csv_delimiter(self, delim: impl Into<String>) -> Self
设置 CSV 分隔符
对应 ExifTool 的 -csvDelim 选项,设置 CSV 输出中使用的分隔符字符。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
let output = exiftool.query("photo.jpg")
.csv_delimiter("\t")
.execute_text()?;Sourcepub fn alternate_file(self, num: u8, path: impl Into<String>) -> Self
pub fn alternate_file(self, num: u8, path: impl Into<String>) -> Self
加载替代文件的标签信息
对应 ExifTool 的 -fileNUM 选项,从替代文件中加载标签。
num 为文件编号(1-9),path 为替代文件路径。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
let metadata = exiftool.query("photo.jpg")
.alternate_file(1, "other.jpg")
.execute()?;递归处理子目录(包含隐藏目录)
对应 ExifTool 的 -r. 选项,递归处理时包含以 . 开头的隐藏目录。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
let metadata = exiftool.query("/photos")
.recursive_hidden()
.execute()?;Sourcepub fn source_file(self, fmt: impl Into<String>) -> Self
pub fn source_file(self, fmt: impl Into<String>) -> Self
设置源文件格式
对应 ExifTool 的 -srcfile 选项,指定处理时使用的源文件格式字符串。
支持使用 %d、%f、%e 等占位符来匹配不同的源文件。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 从 XMP sidecar 文件读取标签
let metadata = exiftool.query("photo.jpg")
.source_file("%d%f.xmp")
.execute()?;Sourcepub fn unknown_binary(self) -> Self
pub fn unknown_binary(self) -> Self
提取未知二进制标签
对应 ExifTool 的 -U 选项,提取未知的二进制标签值。
比 -u 更激进,会尝试解码未知的二进制数据。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
let metadata = exiftool.query("photo.jpg")
.unknown_binary()
.execute()?;Sourcepub fn use_module(self, module: impl Into<String>) -> Self
pub fn use_module(self, module: impl Into<String>) -> Self
加载 ExifTool 插件模块
对应 ExifTool 的 -use 选项,加载指定的 ExifTool 插件模块。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
let metadata = exiftool.query("photo.jpg")
.use_module("MWG")
.execute()?;Sourcepub fn print_format(self, format: impl Into<String>) -> Self
pub fn print_format(self, format: impl Into<String>) -> Self
设置自定义打印格式
使用 -p 选项按指定格式打印输出。
使用 $TAGNAME 语法引用标签值。
§格式语法
$TAGNAME- 插入标签值$TAGNAME#- 插入原始数值(无格式化)${TAGNAME:FMT}- 使用指定格式$$- 插入$字符
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 自定义输出格式
let output = exiftool.query("photo.jpg")
.print_format("$FileName: $DateTimeOriginal ($Make $Model)")
.execute_text()?;
println!("{}", output);Sourcepub fn no_print_conv(self) -> Self
pub fn no_print_conv(self) -> Self
禁用打印转换
使用 -n 选项禁用所有打印转换,显示原始数值。
与 raw_values() 功能相同,但提供更直观的命名。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 禁用打印转换,获取原始数值
let metadata = exiftool.query("photo.jpg")
.no_print_conv()
.execute()?;Sourcepub fn binary(self) -> Self
pub fn binary(self) -> Self
二进制输出
使用 -b 选项以二进制格式输出标签值。
通常用于提取缩略图、预览图等二进制数据。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 以二进制格式输出
let output = exiftool.query("photo.jpg")
.binary()
.tag("ThumbnailImage")
.execute_text()?;Sourcepub fn group_headings(self, num: Option<u8>) -> Self
pub fn group_headings(self, num: Option<u8>) -> Self
按组分类输出
使用 -g 选项按组分类显示标签。
可选参数指定分组级别(0-7),默认为 0。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 按默认分组级别显示
let metadata = exiftool.query("photo.jpg")
.group_headings(None)
.execute()?;
// 按指定分组级别显示
let metadata = exiftool.query("photo.jpg")
.group_headings(Some(1))
.execute()?;Sourcepub fn group_headings_multi(self, groups: &[u8]) -> Self
pub fn group_headings_multi(self, groups: &[u8]) -> Self
按多个组级别分类输出
使用 -gNUM:NUM:... 选项按多个组级别分类显示标签。
例如 group_headings_multi(&[0, 1]) 生成 -g0:1。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 按多组级别分类显示(-g0:1:2)
let metadata = exiftool.query("photo.jpg")
.group_headings_multi(&[0, 1, 2])
.execute()?;Sourcepub fn short(self, level: Option<u8>) -> Self
pub fn short(self, level: Option<u8>) -> Self
短输出格式
使用 -s 选项以短格式输出标签名。
可选参数指定短格式级别:
None或Some(1)--s使用标签名而非描述Some(2)--s2更短的输出Some(3)--s3最短输出
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
let metadata = exiftool.query("photo.jpg")
.short(Some(2))
.execute()?;Sourcepub fn short_format_level(self, level: u8) -> Self
pub fn short_format_level(self, level: u8) -> Self
显式指定短格式级别
使用 -sNUM 选项显式指定短格式级别,支持 -s1、-s2、-s3。
§参数
level- 短格式级别(1、2 或 3)
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 使用 -s1 显式指定级别 1
let metadata = exiftool.query("photo.jpg")
.short_format_level(1)
.execute()?;
// 使用 -s3 最短格式
let metadata = exiftool.query("photo.jpg")
.short_format_level(3)
.execute()?;Sourcepub fn very_short(self) -> Self
pub fn very_short(self) -> Self
极短输出格式
使用 -S 选项以极短格式输出(仅标签名和值)
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
let output = exiftool.query("photo.jpg")
.very_short()
.execute_text()?;Sourcepub fn allow_duplicates(self) -> Self
pub fn allow_duplicates(self) -> Self
允许重复标签
使用 -a 选项允许输出中包含重复的标签。
与 include_duplicates(true) 功能相同。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
let metadata = exiftool.query("photo.jpg")
.allow_duplicates()
.execute()?;Sourcepub fn unknown(self) -> Self
pub fn unknown(self) -> Self
提取未知标签
使用 -u 选项提取未知标签。
与 include_unknown(true) 功能相同。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
let metadata = exiftool.query("photo.jpg")
.unknown()
.execute()?;Sourcepub fn xml_format(self) -> Self
pub fn xml_format(self) -> Self
XML 格式输出
使用 -X 选项以 XML/RDF 格式输出。
通常与 execute_text() 配合使用获取 XML 文本。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
let xml = exiftool.query("photo.jpg")
.xml_format()
.execute_text()?;Sourcepub fn ignore_minor_errors(self) -> Self
pub fn ignore_minor_errors(self) -> Self
忽略次要错误
使用 -m 选项忽略次要错误和警告,继续处理。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
let metadata = exiftool.query("photo.jpg")
.ignore_minor_errors()
.execute()?;Sourcepub fn separator(self, sep: impl Into<String>) -> Self
pub fn separator(self, sep: impl Into<String>) -> Self
设置列表项分隔符
使用 -sep 选项设置列表项的分隔符字符串
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 使用逗号分隔列表项
let metadata = exiftool.query("photo.jpg")
.separator(", ")
.execute()?;Sourcepub fn scan_for_xmp(self, yes: bool) -> Self
pub fn scan_for_xmp(self, yes: bool) -> Self
强制扫描 XMP 数据
使用 -scanForXMP 选项暴力扫描文件中的 XMP 数据
Sourcepub fn api_option(
self,
opt: impl Into<String>,
value: Option<impl Into<String>>,
) -> Self
pub fn api_option( self, opt: impl Into<String>, value: Option<impl Into<String>>, ) -> Self
设置 API 选项
使用 -api 选项设置 ExifTool API 选项。
常见选项包括:QuickTimeUTC, SystemTags, largefilesupport
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 启用 QuickTimeUTC
let metadata = exiftool.query("video.mp4")
.api_option("QuickTimeUTC", None::<&str>)
.execute()?;Sourcepub fn api_option_empty(
self,
opt: impl Into<String>,
value: Option<impl Into<String>>,
) -> Self
pub fn api_option_empty( self, opt: impl Into<String>, value: Option<impl Into<String>>, ) -> Self
设置 API 选项(使用 ^= 赋值语义)
使用 -api OPT^=VAL 设置 API 选项。
与 = 赋值的区别:省略值时 = 设为 undef,^= 设为空字符串。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 设置 API 选项为空字符串(-api OPT^=)
let metadata = exiftool.query("photo.jpg")
.api_option_empty("LargeFileSupport", None::<&str>)
.execute()?;Sourcepub fn user_param(
self,
param: impl Into<String>,
value: Option<impl Into<String>>,
) -> Self
pub fn user_param( self, param: impl Into<String>, value: Option<impl Into<String>>, ) -> Self
设置用户参数
使用 -userParam 选项设置用户参数,可在配置文件中使用
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 设置自定义参数
let metadata = exiftool.query("photo.jpg")
.user_param("MyParam", Some("value"))
.execute()?;Sourcepub fn user_param_empty(
self,
param: impl Into<String>,
value: Option<impl Into<String>>,
) -> Self
pub fn user_param_empty( self, param: impl Into<String>, value: Option<impl Into<String>>, ) -> Self
设置用户参数(使用 ^= 赋值语义)
使用 -userParam PARAM^=VAL 设置用户参数。
与 = 赋值的区别:省略值时 = 设为 undef,^= 设为空字符串。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 设置用户参数为空字符串
let metadata = exiftool.query("photo.jpg")
.user_param_empty("MyParam", None::<&str>)
.execute()?;Sourcepub fn escape(self, format: EscapeFormat) -> Self
pub fn escape(self, format: EscapeFormat) -> Self
转义格式
使用 -E、-ex 或 -ec 选项转义标签值
Sourcepub fn escape_html(self) -> Self
pub fn escape_html(self) -> Self
HTML 转义输出
使用 -E 选项对标签值进行 HTML 实体转义。
这是 escape(EscapeFormat::Html) 的快捷方法。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
let metadata = exiftool.query("photo.jpg")
.escape_html()
.execute()?;Sourcepub fn escape_xml(self) -> Self
pub fn escape_xml(self) -> Self
XML 转义输出
使用 -ex 选项对标签值进行 XML 转义。
这是 escape(EscapeFormat::Xml) 的快捷方法。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
let metadata = exiftool.query("photo.jpg")
.escape_xml()
.execute()?;Sourcepub fn escape_c(self) -> Self
pub fn escape_c(self) -> Self
C 语言转义输出
使用 -ec 选项对标签值进行 C 语言风格转义。
这是 escape(EscapeFormat::C) 的快捷方法。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
let metadata = exiftool.query("photo.jpg")
.escape_c()
.execute()?;Sourcepub fn force_print(self, yes: bool) -> Self
pub fn force_print(self, yes: bool) -> Self
强制打印
使用 -f 选项强制打印所有指定标签
Sourcepub fn group_names(self, level: Option<u8>) -> Self
pub fn group_names(self, level: Option<u8>) -> Self
打印组名
使用 -G 选项打印每个标签的组名。
单个级别参数,生成 -G 或 -GN。
Sourcepub fn group_names_multi(self, groups: &[u8]) -> Self
pub fn group_names_multi(self, groups: &[u8]) -> Self
打印多个组级别的组名
使用 -GNUM:NUM:... 选项打印多组级别的组名。
例如 group_names_multi(&[0, 1]) 生成 -G0:1。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 按多组级别打印组名(-G0:1:2)
let metadata = exiftool.query("photo.jpg")
.group_names_multi(&[0, 1, 2])
.execute()?;Sourcepub fn html_format(self, yes: bool) -> Self
pub fn html_format(self, yes: bool) -> Self
HTML 格式
使用 -h 选项以 HTML 格式输出
Sourcepub fn long_format(self, yes: bool) -> Self
pub fn long_format(self, yes: bool) -> Self
长格式输出
使用 -l 选项以长格式(2行)输出
Sourcepub fn short_format(self, level: Option<u8>) -> Self
pub fn short_format(self, level: Option<u8>) -> Self
短格式输出
使用 -s 或 -S 选项以短格式输出
Sourcepub fn tab_format(self, yes: bool) -> Self
pub fn tab_format(self, yes: bool) -> Self
Tab 分隔格式
使用 -t 选项以 Tab 分隔格式输出
Sourcepub fn table_format(self, yes: bool) -> Self
pub fn table_format(self, yes: bool) -> Self
表格格式
使用 -T 选项以表格格式输出
Sourcepub fn tag_out_ext(self, ext: impl Into<String>) -> Self
pub fn tag_out_ext(self, ext: impl Into<String>) -> Self
标签输出扩展名过滤
使用 -Wext 选项指定 -W 输出的文件类型
Sourcepub fn list_dir(self) -> Self
pub fn list_dir(self) -> Self
列出目录而非文件
使用 -list_dir 选项让 ExifTool 列出目录名而非处理文件。
与 -r 递归选项配合使用时,输出目录树结构。
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 列出目录而非文件
let output = exiftool.query("/photos")
.list_dir()
.recursive(true)
.execute_text()?;Sourcepub fn file_order(self, tag: impl Into<String>, descending: bool) -> Self
pub fn file_order(self, tag: impl Into<String>, descending: bool) -> Self
文件处理顺序
使用 -fileOrder 选项设置文件处理顺序
Sourcepub fn html_dump(self, offset: Option<u32>) -> Self
pub fn html_dump(self, offset: Option<u32>) -> Self
HTML 二进制转储
使用 -htmlDump 选项生成 HTML 格式的二进制转储。
可以指定可选的偏移量。
§参数
offset- 可选的起始偏移量。None表示无偏移(纯-htmlDump),Some(n)表示带偏移量(-htmlDumpN)
Sourcepub fn html_dump_offset(self, offset: u32) -> Self
pub fn html_dump_offset(self, offset: u32) -> Self
HTML 二进制转储(带指定偏移量)
使用 -htmlDumpOFFSET 选项生成带偏移量的 HTML 二进制转储。
这是 html_dump(Some(offset)) 的便捷方法。
Sourcepub fn php_format(self, yes: bool) -> Self
pub fn php_format(self, yes: bool) -> Self
PHP数组格式输出
使用 -php 选项导出为PHP数组格式
Sourcepub fn plot_format(self, yes: bool) -> Self
pub fn plot_format(self, yes: bool) -> Self
SVG plot格式输出
使用 -plot 选项输出为SVG plot文件
Sourcepub fn args_format(self, yes: bool) -> Self
pub fn args_format(self, yes: bool) -> Self
格式化为exiftool参数
使用 -args 选项将元数据格式化为exiftool参数格式
Sourcepub fn common_args(self, args: &[impl AsRef<str>]) -> Self
pub fn common_args(self, args: &[impl AsRef<str>]) -> Self
设置公共参数
使用 -common_args 选项定义在多个命令之间共享的参数
Sourcepub fn echo(
self,
text: impl Into<String>,
target: Option<impl Into<String>>,
) -> Self
pub fn echo( self, text: impl Into<String>, target: Option<impl Into<String>>, ) -> Self
输出文本到stdout或stderr
使用 -echo 选项在处理期间输出文本
text: 要输出的文本target: 输出目标,None表示stdout,Some(“stderr”)表示stderr
Sourcepub fn echo_level(self, level: u8, text: impl Into<String>) -> Self
pub fn echo_level(self, level: u8, text: impl Into<String>) -> Self
指定级别的echo输出
使用 -echoNUM 选项在处理期间输出文本到指定级别的输出流。
- 级别 1: stdout (等价于
-echo) - 级别 2: stderr (等价于
-echo2) - 级别 3: 额外输出级别3
- 级别 4: 额外输出级别4
§参数
level- echo级别 (1-4)text- 要输出的文本
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
// 使用 -echo3 输出到级别3
let metadata = exiftool.query("photo.jpg")
.echo_level(3, "Processing...")
.execute()?;Sourcepub fn efile(self, filename: impl Into<String>) -> Self
pub fn efile(self, filename: impl Into<String>) -> Self
保存错误文件名到文件
使用 -efile 选项将处理失败的文件名保存到指定文件
Sourcepub fn efile_variant(
self,
filename: impl Into<String>,
num: Option<u8>,
force: bool,
) -> Self
pub fn efile_variant( self, filename: impl Into<String>, num: Option<u8>, force: bool, ) -> Self
保存错误文件名到文件(带级别和强制标志)
使用 -efileNUM 或 -efile! 或 -efileNUM! 变体。
§参数
filename- 输出文件路径num- 可选级别(2、3 等),None表示默认级别force- 是否使用!后缀(强制覆盖)
Sourcepub fn extension_add(self, ext: impl Into<String>) -> Self
pub fn extension_add(self, ext: impl Into<String>) -> Self
追加扩展名过滤
使用 -ext+ 选项追加文件扩展名过滤(而非替换已有列表)。
与 extension() 不同,此方法会在已有扩展名列表基础上追加。
Sourcepub fn file_order_secondary(
self,
num: u8,
tag: impl Into<String>,
descending: bool,
) -> Self
pub fn file_order_secondary( self, num: u8, tag: impl Into<String>, descending: bool, ) -> Self
次级文件处理顺序
使用 -fileOrderNUM 选项设置次级排序。
num 为排序优先级(如 2 表示 -fileOrder2)。
Sourcepub fn condition_num(self, num: u8, expr: impl Into<String>) -> Self
pub fn condition_num(self, num: u8, expr: impl Into<String>) -> Self
条件过滤(带编号)
使用 -ifNUM 选项设置条件过滤。
-if2 在第一个条件失败时仍然继续检查。
-if3 及更高编号用于更细粒度的控制。
§参数
num- 条件编号(如 2 表示-if2)expr- 条件表达式
Sourcepub fn tag_out_append(self, format: impl Into<String>) -> Self
pub fn tag_out_append(self, format: impl Into<String>) -> Self
标签输出到文件(追加模式)
使用 -W+ 选项为每个标签创建输出文件,追加到已有文件。
Sourcepub fn tag_out_create(self, format: impl Into<String>) -> Self
pub fn tag_out_create(self, format: impl Into<String>) -> Self
标签输出到文件(仅创建新文件)
使用 -W! 选项为每个标签创建输出文件,但不覆盖已有文件。
Sourcepub fn text_out_append(self, ext: impl Into<String>) -> Self
pub fn text_out_append(self, ext: impl Into<String>) -> Self
文本输出到文件(追加模式)
使用 -w+ 选项将输出追加到已有文件。
Sourcepub fn text_out_create(self, ext: impl Into<String>) -> Self
pub fn text_out_create(self, ext: impl Into<String>) -> Self
文本输出到文件(仅创建新文件)
使用 -w! 选项将输出写入新文件,但不覆盖已有文件。
Sourcepub fn print_format_no_newline(self, format: impl Into<String>) -> Self
pub fn print_format_no_newline(self, format: impl Into<String>) -> Self
自定义打印格式(不追加换行符)
使用 -p- 选项按指定格式打印输出,但不在每行末尾追加换行符。
与 print_format() 的区别在于输出不会自动追加换行。
Sourcepub fn json_import(self, path: impl Into<String>) -> Self
pub fn json_import(self, path: impl Into<String>) -> Self
导入 JSON 文件中的标签
使用 -j=JSONFILE 选项从 JSON 文件中导入标签数据。
Sourcepub fn json_append(self, path: impl Into<String>) -> Self
pub fn json_append(self, path: impl Into<String>) -> Self
追加导入 JSON 文件中的标签
使用 -j+=JSONFILE 选项从 JSON 文件中追加导入标签数据。
Sourcepub fn csv_import(self, path: impl Into<String>) -> Self
pub fn csv_import(self, path: impl Into<String>) -> Self
导入 CSV 文件中的标签
使用 -csv=CSVFILE 选项从 CSV 文件中导入标签数据。
Sourcepub fn csv_append(self, path: impl Into<String>) -> Self
pub fn csv_append(self, path: impl Into<String>) -> Self
追加导入 CSV 文件中的标签
使用 -csv+=CSVFILE 选项从 CSV 文件中追加导入标签数据。
Sourcepub fn fix_base(self, offset: Option<i64>) -> Self
pub fn fix_base(self, offset: Option<i64>) -> Self
修复 MakerNotes 基准偏移
使用 -F 选项修复 MakerNotes 的基准偏移。
不带参数时自动修复,带偏移量时使用指定偏移。
§参数
offset- 可选的偏移量修正值。None表示自动修复(-F),Some(n)表示指定偏移(-Fn)
Sourcepub fn fix_base_offset(self, offset: i64) -> Self
pub fn fix_base_offset(self, offset: i64) -> Self
修复 MakerNotes 基准偏移(带指定偏移量)
使用 -FOFFSET 选项修复 MakerNotes 偏移。
这是 fix_base(Some(offset)) 的便捷方法。
Sourcepub fn execute_json(self) -> Result<Value>
pub fn execute_json(self) -> Result<Value>
执行查询并返回 JSON
Sourcepub fn execute_as<T: DeserializeOwned>(self) -> Result<T>
pub fn execute_as<T: DeserializeOwned>(self) -> Result<T>
执行查询并反序列化为自定义类型
Sourcepub fn execute_text(self) -> Result<String>
pub fn execute_text(self) -> Result<String>
执行查询并返回纯文本
当使用 -p (print_format) 选项时,
使用此方法获取纯文本输出而非 JSON
§示例
use exiftool_rs_wrapper::ExifTool;
let exiftool = ExifTool::new()?;
let output = exiftool.query("photo.jpg")
.print_format("$FileName: $DateTimeOriginal")
.execute_text()?;
println!("{}", output);