foobar2000

0.7版本title formatting语法参考(翻译:蓝色网际)

字段

%fieldname% 插入元数据字段名<fieldname> %title% - 标题
%artist% - 作者、歌手
%album% - 专辑
%tracknumber% - 音轨序号
%comment% - 注释
%date% - 日期
%__fieldname% 插入编码、技术信息 <fieldname> %__bitrate% - 比特率
%__bitrate_dynamic% - 动态比特率
%__codec% - 编码格式
%__channels% - 声道
%__samplerate% - 采样率
%__bitspersample% - 采样位数
%_path% 插入文件全名和路径
%_path_raw% 插入文件全名包括路径和协议
%_filename% 插入文件名不包括扩展名
%_filename_ext% 插入文件名包括扩展名
%_directoryname% 插入文件夹名
%_subsong% 插入子歌曲索引
%_foobar2000_version% 插入foobar2000版本字串
%_length% 插入歌曲长度信息
%_length_seconds% 插入歌曲长度信息(秒)

特殊字段(播放列表)

%_isplaying% 文件正在播放时返回1,否则返回空值
%_ispaused% 暂停时返回1,否则返回空值
%_playlist_number% 返回播放列表索引
%_playlist_total% 返回文件在播放列表里的序号
%_playlist_name% 返回播放列表名称包括指定的项

特殊字段 (状态栏, Windows 标题或复制命令)

%_time_elapsed% 返回已播放用时
%_time_remaining% 返回剩余时间直到音轨结束
%_time_total% 返回音轨总长度
%_time_elapsed_seconds% 返回总用时(秒)
%_time_remaining_seconds% 返回剩余时间(秒)
%_time_total_seconds% 返回音轨总长度(秒)
%_ispaused% 暂停时返回1,否则返回空值

颜色 (只对播放列表和状态栏有效)

XXXXXX 设置文本颜色为 XXXXXX,XXXXXX 新文本颜色的十六进制格式; 会在选定的段里显示一个颜色
XXXXXX|YYYYYY 设置文本颜色XXXXXX 显示未选定的段的颜色,而YYYYYY 显示选定段的颜色
 重置为默认颜色

向右对齐文本 (仅对播放列表和状态栏有效)

函数

$abbr(x) 插入x的缩写 "$abbr(%album%)" - 把"Final Fantasy VI" 专辑名转化为"FFVI"
$abbr(x,y) 如果x字符大于y则插入缩写,否则插入全称 $abbr(%album%,10)
$add(x,y...) 数学操作(x+y+...) $add(%TRACKNUMBER%,$mul(%DISC%,100))
$and(x,y...) 执行逻辑“与”操作。一般用在$if()类型函数里或其他逻辑操作
$ansi(x) 把x转换为系统代码页并返回。任何不存在于系统代码页的字符将会被移除或替换。对于批量更名文件非常有用,可以确保不支持Unidode软件的兼容性
$blend(a,b,c,d) 在颜色a和b里以c/d产生一个颜色 $blend($rgb(0,0,0),$rgb(255,255,255),%_time_elapsed%,%_time_total%)
$caps(x) 把x的第一个字符转换为大写,其余字符为小写 "$caps(blah BLAH)" -> "Blah Blah"
$caps2(x) 和$caps一样,但保留本身的大写字符 "$caps2(blah BLAH)" -> "Blah BLAH"
$char(x) 插入Unicode字符序号x "$char(3)" produces the character controlling color codes in playlist
$crlf() 插入换行代码。常用在多行脚本(例如:系统托盘工具提示) $crlf()
$cut(a,b) 保留a字串左起第b个字符 $cut(%title%,5)
$directory(x), $directory(x,n) 从文件路径里提取目录名,选项n为第n层目录 $directory(%_path%,2)
$div(x,y) 数学操作(x÷y) $div(%TRACKNUMBER%,100)
$ext(x) 从文件路径/文件名里提取扩展名 $ext(%_path%)
$filename(x) 从完整路径里提取文件名 $filename(%_path%)
$fix_eol(x) 扫描x中是否有换行符(CR/LF),如果发现了则截断并在末尾添加(...)
$fix_eol(x,y) 扫描x中是否有换行符(CR/LF),如果发现了则截断并在末尾添加y
$greater(x,y) 比较两个整数,看是否x>y。一般用在$if()类型函数里或其他逻辑操作 $if($greater(%TRACKNUMBER%,100),$div(%TRACKNUMBER%,100),%DISC%)
$hex(x) 把十进制整数x转换为十六进制符号 $hex(%_playlist_number%)
$hex(x,y) 把十进制整数x转换为十六进制符号,填充0到y个数 $hex(%_playlist_number%,3)
$if(a,b,c) 如果a成立、存在则执行、显示a,否则执行、显示c "$if(%artist%,%artist%,缺少歌手信息)" 当歌手信息存在时显示歌手名字,否则显示“缺少歌手信息” 。注意:"$if(a,a,)"等价于"[a]" (看这里
$if2(a,b) 和$if(a,a,b)一样 $if2(%title%,%_filename%)
$if3(a,b,c,..) 返回第一个非空项目
$ifgreater(a,b,c,d) 如果a包含b,显示、执行c,否则显示、执行d
$iflonger(a,b,c,d) 如果字串a比b长,显示、执行c,否则显示、执行d
$info(x) 返回x段名的技术信息,末尾标记不能被截断 "$info(bitrate)" 和 "%__bitrate%" 一样
$insert(a,b,n) 把a字串第n个字符之后的字符插入到b字串的后面
$left(a,b) 返回a左起的b个字符 $left(%title%,5)
$len(x) 返回x字串长度 $len(abc)返回3,$len(你好)返回2
$len2(x) 返回x字串长度,双宽字符看作两个字符(参数设置/Display -> “双宽字节在标题中的格式”必须选择“把双宽字符看作两个常规字符”) $len2(abc)返回3,$len2(你好)返回4
$longer(x,y) 比较字串x是否比字串y长,一般用在$if()类型函数里或其他逻辑操作
$lower(x) 把X转换为小写 $lower(%title%)
$longest(a,b,c,....) 比较a,b,c....,返回最长的字串 $longest(%title%,%comment%)
$mod(x,y) 求x÷y的余数 $mod($rand(),10)
$mul(x,y...) 多个整数相乘 (x*y*...) $add(%TRACKNUMBER%,$mul(%DISC%,100))
$muldiv(x,y,z) 整数x乘以整数y然后除以整数z
$min(x,y...) 数学操作(取最小值)
$max(x,y...) 数学操作(取最大值)
$meta(x) 插入元数据段名x的值 "$meta(artist)" 和 "%artist%" 一样
$meta(x,y) 对于每个段名存在多个值,返回元数据段名x的第y个值 "multiple artists - $meta(artist,1), $meta(artist,2)"
$meta_sep(x,y), $meta_sep(x,y,z) 对存在多个值的段x使用自定义的分隔符分隔并返回元数据 对有三个作者A, B, C的段使用"$meta(artist,', ','和')" 将产生 - "A, B和C"
$meta_num(x) 返回元数据段x当前值的个数
$num(x,y) 显示x,如果x位数小于y则在前面插入0补齐(常用在音轨的序号上) $num(%tracknumber%,2)
$not(x) “非”逻辑运算,x=0时返回1,x=1时返回0。一般用在$if()类型函数里或其他逻辑操作
$or(x,y...) “或”逻辑运算,x=y=0时返回0否则返回1。一般用在$if()类型函数里或其他逻辑操作
$pad(x,y), $pad_right(x,y) 字串x的长度小于y时用空格补齐到y个字符。_right表示从右边开始操作
$pad(x,y,z), $pad_right(x,y,z) 字串x的长度小于y时用z字符补齐到y个字符。_right表示从右边开始操作
$padcut(x,y), $padcut_right(x,y) 字串x的长度小于y时填充x到y个字符,字串x的长度大于y时截断x到y个字符。_right表示从右边开始操作
$progress(a,b,c,d,e), $progress2(a,b,c,d,e) 创建进度条: a包含位置,b包含范围,c为进度条字符长度,d和e为建立进度条的字符。$progress2()所表现的形式不一样 "$progress(%_time_elapsed_seconds%, %_time_total_seconds%, 20,'#','=')" 产生"====#===============", #字符会随着回放位置而移动
$rand() 在0到2 32 -1(32位真彩)范围内随机产生一个数字 $mod($rand(),10)
$repeat(x,y) 重复x字符y次
$replace(a,b,c) 把存在于a字串里的所有b字串替换为c字串。另外,你可以指定多个参数,$replace(a,b1,c1,b2,c2,b3,c3....),所有的bX将会被替换为对应的cX
$right(a,b) 返回a字串右起b个字符 $right(%title%,5)
$roman(x) 把十进制数x转换为罗马符号 $roman(%tracknumber%)
$rgb(a,b,c), $rgb(a,b,c,d,e,f) 把十进制颜色值转换为颜色代码(看上面的颜色)
$shortest(a,b,c,....) 比较a,b,c...并返回最短的一个字串 $shortest(%title%,%comment%)
$strchr(x,y) 返回在字串x里出现的第一个y字符在x字串里的位置 "$strchr(1234abcdc,c)"将返回7
$strrchr(x,y) 返回在字串x里出现的最后一个y字符在x字串里的位置 "$strrchr(1234abcdc,c)"将返回9
$strstr(x,y) 返回在字串x里出现的第一个y字串在x字串里的位置 "$strstr(1234abcdc,34ab)"将返回3
$sub(x,y) 减法(x-y)
$strcmp(x,y) 比较两个字串,当x等于y时返回1,否则返回0。一般用在$if()类型函数里或其他逻辑操作
$stricmp(x,y) 比较两个字串,当x等于y时返回1,否则返回0,不区别大小写。一般用在$if()类型函数里或其他逻辑操作
$substr(a,b,c) 返回字串a里的子字串,从第b个字符开始到第c个字符 $substr('blah',1,2) 返回 'bl'
$select(n,a,b,c,....) 返回字串a,b,c...里的第n个字串
$trim(a) 移除a字串里开始、结尾处的空格 $trim(%comment%)
$tab(), $tab(n) 产生一个($tab())或多个($tab(n))制表符 $tab()
$transition(a,b,c) 使a字串产生从b颜色到c颜色的渐变 $transition(%TITLE%,$rgb(0,0,0),$rgb(255,255,255))
$upper(x) 把x转换为大写 $upper(%title%)
$xor(x,y) “异或”逻辑运算,x≠y时返回1否则返回0。一般用在$if()类型函数里或其他逻辑操作

变量操作

$put(name,text) 把变量名<name>指向<text>并返回<text> "$put(x,blah)" 把变量 x 指向 'blah' 并返回 'blah'
$puts(name,text) 和$put(name,text)一样,但是返回空字串
$get(name) 返回<name>变量的值 "$puts(x,blah)$get(x)$get(x)" 将返回 'blahblah'

其他

[ .... ] []里的为可选项,如果存在则显示,不存在则不显示 "%artist% - [%album% / ]%title%" 当 [] 里的为空时将不会被显示;注意混合的[]可能会导致不可预知的结果并且是无效的(使用 $if() 来代替)
' (单引号) 输出不处理的原始字符、字串 'blah$blah%blah[][]' 会输出字串内容而忽略里面所有预定的字符(%,$,[,]) 等; 你可以利用这个功能在一个例子里插入方括号
// 注释,必须在句子的开始处使用,它后面的字符均不被处理
end-of-line 字符 忽略;如果你需要可以使用$char() 来对奇怪的字符强制排序;你可以安全的把一个长的字串分离成多行而不会影响输出