如何下载网络视频?Shadowsocks 端口占用怎么办?怎么回放英雄联盟录像文件?难以归类的小知识、冷知识和歪门邪道的大杂烩。
IDEA
翻译插件自动忽略星号
在用 IDEA 查看源代码时,习惯使用 Translation 插件翻译大段的英文注释。对于多行注释,直接在文档注释范围内右键,选择「Translate documentation」即可:
对于普通的多行注释,Translation 插件则没有提供「Translate documentation」选项。如果选中翻译,会因为星号的存在影响翻译准确度,翻译结果如下:
可以在插件设置中用正则表达式 [/*]+
将 *
忽略,使其不影响翻译效果:
参考资料: 如何使用正则过滤大段注释中的星号
VSCode
注册VSCode右键菜单
添加 VSCode 到右键菜单,实现右键文件、文件夹或空白处可以选择使用 VSCode 打开的效果:
1 | [HKEY_CLASSES_ROOT\*\shell\VSCode] |
注:需要替换为实际安装路径
允许全角字符不被高亮
更新 VSCode 1.66.2 版本后,编辑器会对 , ( )
等全角符号高亮显示,如果不需要高亮这些符号,可以将鼠标放置在高亮符号处根据提示设置允许在中文环境下使用 ,
和 (
这两个字符。可能当前版本存在 BUG,对于 )
符号,提示中的“调整设置”按钮是无法点击的。
可以进入设置,搜索 Unicode Highlight: Allowed Characters
,点击“添加项”将 )
添加进来并设置为 true
。
Windows Terminal
“Windows 系统一直缺少个好用的终端”,而 Windows Terminal 的出现正在打破这一观念。它不仅有着现代化的界面,还有完整的字体字符渲染机制,在 Windows Terminal 上运行 Git Bash 也不会中文乱码了。
安装
打开 Microsoft Store,搜索 Windows Terminal 并安装。
![Windows Terminal-install](/Tips/Windows Terminal-install.png)
配置
Windows Terminal 集成 Git Bash https://blog.csdn.net/Magic_Ninja/article/details/122671663
默认情况下,Windows Terminal 会为我们自动配置本机安装的命令行环境,包括 PowerShell、CMD 以及微软自家的 Azure Cloud Shell,可以通过标签栏旁边的下拉三角选择打开不同的环境。
如果想要对 Windows Terminal 进行配置,比如添加 Git Bash 进来、更改默认环境等,可以点击下拉三角 -> 配置,编辑 settings.json
文件的内容来进行改动。
添加 Git Bash
在 list
数组中添加一组 Git Bash 的配置。注意修改 commandline
和 icon
为自己的实际路径:
1 | "list": [ |
更改默认环境
修改 defaultProfile
的值即可。比如想要设置刚才配置的 Git Bash 为默认环境,将 Git Bash 的 guid
粘贴过去即可。
1 | - "defaultProfile": "{61c54bbd-c2c6-5271-91e7-009a86fd44bf}", |
自动复制选中内容
修改 copyOnSelect
为 true
即可:
1 | // If enabled, selections are automatically copied to your clipboard. |
快捷键
按住 Alt 键的同时点击设置,可以在默认设置文件 default.json
中看到 Windows Terminal 支持的功能及默认的快捷键:
功能 | 快捷键 |
---|---|
打开设置 | Ctrl + , |
打开新的标签页 | Ctrl + Shift + T |
在新的标签页打开对应的环境 | Ctrl + Shift + 1 ~`9` |
复制标签页 | Ctrl + Shift + D |
切换到下一个标签页 | Ctrl + Tab |
切换到上一个标签页 | Ctrl + Shift + Tab |
切换到对应的标签页 | Ctrl + Alt + 1 ~`9` |
关闭当前标签页 | Ctrl + Shift + W |
水平分割当前窗口 | Alt + Shift + - |
垂直分割当前窗口 | Alt + Shift + + |
Quaker Mode
Win
+ ``` 开启 Quake Mode,在屏幕上方呼出终端,再次按下快捷键可以隐藏。
添加到右键菜单
注:微软在 Win10 20H2 后已将 Open in Windows Terminal 添加到右键菜单。
使用批处理脚本一键添加 Windows Terminal 到右键菜单,使用前需检查是否配置以下环境变量:
1 | cmd> echo %USERPROFILE% |
MicrosoftTerminalHere.bat
脚本文件内容如下:
1 | :: install or uninstall windows terminal here |
如果因为升级 Windows Terminal 导致右键菜单中的图标丢失,可以打开注册表修改图标所在的路径:
- 运行
regedit
打开注册表编辑器。 - 进入
计算机\HKEY_CLASSES_ROOT\Directory\Background\shell\wt_shell
以及计算机\HKEY_CLASSES_ROOT\Directory\shell\wt_shell
。 - 修改
Icon
的值为最新路径。最新路径可以通过以下方式找到:
Win
+S
输入wt
,右键选择“打开文件所在的位置”- 完整路径示例:
1
C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_1.2.2381.0_x64__8wekyb3d8bbwe\WindowsTerminal.exe
隐藏Windows分类文件夹
Windows 文件资源管理器中的“视频”、“图片”、“文档”、“下载”、“音乐”、“桌面”这几个分类文件夹很少用到,可以通过删除和修改注册表的方式将其隐藏。
方式一
直接删除对应的注册表项,即可将所有分类文件夹隐藏。
Win
+R
输入regedit
打开注册表- 定位到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace
- 删除以下注册表项即可:
1
2
3
4
5
6
7视频:{f86fa3ab-70d2-4fc7-9c99-fcbf05467f3a}
图片:{24ad3ad4-a569-4530-98e1-ab02f9417aa8}
文档:{d3162b92-9365-467a-956b-92703aca08af}
下载:{088e3905-0323-4b02-9826-5d99428e115f}
音乐:{3dfdf296-dbec-4fb4-81d1-6a3438bcf4de}
桌面:{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}
3D对象:{0DB7E03F-FC29-4DC6-9020-FF41B59E513A}
方式二
修改对应的注册表项,可以隐藏大多数分类文件夹。新增的“3D对象”文件夹可通过方式一进行删除。
Win
+R
输入regedit
打开注册表- 定位到以下几个注册表项:
1
2
3
4
5
6视频:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{35286a68-3c57-41a1-bbb1-0eae73d76c95}\PropertyBag
图片:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{0ddd015d-b06c-45d5-8c4c-f59713854639}\PropertyBag
文档:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{f42ee2d3-909f-4907-8871-4c22fc0bf756}\PropertyBag
下载:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{7d83ee9b-2244-4e70-b1f5-5393042af1e4}\PropertyBag
音乐:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{a0c69a99-21c8-4671-8703-7934162fcf1d}\PropertyBag
桌面:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}\PropertyBag - 双击修改
ThisPCPolicy
的值,从Show
改为Hide
,即可将对应的文件夹隐藏。
注1:“桌面”对应的 PropertyBag
子项中没有 ThisPCPolicy
,可以右键新建“字符串值”,数值名称为 ThisPCPolicy
,数值数据为 Hide
。
注2:缺少“3D对象”对应的注册表项,可以参考方式一对“3D对象”进行删除。
WSL
如果有使用 VMware Workstation 和 VirtualBox 等第三方虚拟化应用程序的需求,请慎重开启 WSL 功能,可能因为 Intel VT-x 无法与 Hyper-V 共同使用导致无法启动虚拟机。
下载安装
- 启用 WSL。在管理员权限运行的 PowerShell 中执行命令后重启 Windows:
1 | Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux |
- 微软商店下载安装 Ubuntu:
- 启动 Ubuntu,设置用户密码。
修改密码
- 在 PowerShell 中以 root 身份登录 wsl:
1 | wsl -u root |
- 修改用户密码:
1 | passwd your_username |
WSL2
如果有使用 VMware Workstation 和 VirtualBox 等第三方虚拟化应用程序的需求,请慎重开启 WSL 功能,可能因为 Intel VT-x 无法与 Hyper-V 共同使用导致无法启动虚拟机。
安装
适用于 Linux 的 Windows 子系统安装指南 (Windows 10)
网络代理
1 | # 通过以下两种方式可以查看Windows的ip |
禁用Hyper-V
许多第三方虚拟化应用程序无法与 Hyper-V 共同使用,受影响的应用程序包括 VMware Workstation 和 VirtualBox。开启 Hyper-V 后 VMware 就无法选择使用虚拟化引擎 Intel VT-x,导致虚拟机回退到较慢的模拟模式。
若要禁用Hyper-V控制面板中,请按照以下步骤操作:
- 在”控制面板”中,选择 “程序和功能”。
- 选择 “Windows启用或关闭功能”。
- 展开 Hyper-V, 展开Hyper-V Platform”, 然后清除”Hyper-V虚拟机监控 程序 “复选框。
- 以管理员权限打开 PowerShell,运行以下命令:
1 | Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor |
参考资料:*虚拟化应用程序无法与 Hyper-V、Device Guard 和 Credential Guard 一起工作 *
VM虚拟机浏览器菜单透明
运行在 VM 虚拟机的 Windows 系统上的 Chrome/Edge 等 Chromium 内核的浏览器的菜单会显示为半透明的,在白色页面背景下会变得无法阅读。
这类问题一般与显示渲染有关,可以通过关闭图形硬件加速来解决。对于 Chromium 内核浏览器的图形问题,可以通过修改 ANGLE graphics backend 来解决:
- 在浏览器地址栏中输入
chrome://flags/
,搜索Choose ANGLE graphics backend
设置项; - 右侧的下拉列表选择
D3D11on12
,然后点击 Relaunch 重新加载浏览器即可。
Windows端口占用
Windows 系统上的 1080
端口被占用,无法进行网络代理:
- 打开命令行,查询占用
1080
端口的 PID。
1 | $ netstat -aon|findstr 1080 |
- 打开任务管理器,查看「详细信息」,根据 PID 找到该应用,结束任务。
Iperf3测试WiFi速度
随着智能家居产品数量的增加,原先的 WiFi 4 路由器已不堪重用,因此换用支持 WiFi 5 的路由器,借此机会对 WiFi 5 的网速进行测试。
通过在 PC 上部署内网 Iperf 服务器,手机 APP 作为客户端,以此评估无线局域网和手机 WiFi 性能的真实性能。
工具下载
服务器端部署
1 | $ ./iperf3.exe -s |
客户端使用
- 打开 APP ,点击边栏,选取
Iperf3
- 填写服务器 IP ,数据大小填
1024M
- 开始
1 | # 等价于如下命令 |
服务器端命令行:
1 | -s 表示服务器端; |
客户端命令行:
1 | -c 表示服务器的IP地址; |
参考资料: 用 iperf 测试手机无线网卡、无线路由器性能
Obsidian笔记
Obsidian,开启半透明效果后,窗口拖动卡顿。
解决方法:关闭 Windows 系统的透明效果。
通过
找回新浪图床图片
“新浪图床”开启了防盗链,博客中早期用过的一些图片无法加载出来。如果本地磁盘中没有保留图片原始文件,可以通过替换域名地址的方式先打开图片,再自行保存到本地。
1 | - https://ws1.sinaimg.cn |
Aegisub
打轴
红线(左键)开始,蓝线(右键)结束,回车提交。
套用特效字幕模板
- 打开特效字幕模板文件;
- 替换歌词内容;
- 自动化 => 应用卡拉OK模板;
ffmepg切割与合并视频
视频投稿因部分片段版权受限被退回,再渲染一遍耗时耗力,不妨试试用 ffmpeg 对视频进行切割与合并,无需再渲染。
下载安装 ffmpeg
ffmpeg-4.3.1-2020-11-08-full_build.7z
切割
- 将待处理视频
20201117.mp4
放入bin
目录,进入 bash shell; - 使用
-ss
指定切割起始时间,使用-t
指定经过时间或使用-to
指定切割结束时间:ffmpeg-4.3.1-2020-11-08-full_build/bin/ 1
2$ ./ffmpeg.exe -i 20201117.mp4 -ss 00:00:00.0 -c copy -to 00:25:24 part1.mp4
$ ./ffmpeg.exe -i 20201117.mp4 -ss 00:28:27.0 -c copy -to 01:02:35.0 part2.mp4
注意:由于视频使用了关键帧,切割得到的视频与参数中的时间并非精准匹配,往往会在开头出现画面静止数秒,只有音频正常播放的情况。
合并
- 创建文本文件
list.txt
,内容如下:ffmpeg-4.3.1-2020-11-08-full_build/bin/list.txt 1
2file 'part1.mp4'
file 'part2.mp4' - 使用
concat demuxer
合并多个视频为一个视频:ffmpeg-4.3.1-2020-11-08-full_build/bin/ 1
$ ./ffmpeg.exe -f concat -i list.txt -c copy merge.mp4
录播姬开机自启
- 复制录播姬的快捷方式到
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
目录下。 - 右键点击快捷方式,选择「属性」,在「目标」的值后追加
-w 视频保存位置
,「运行方式」选择「最小化」。
回放英雄联盟游戏录像
英雄联盟可以下载对局录像文件,根据官方提供的回放系统的 说明 ,.rofl
文件的用法如下:
- 将
英雄联盟/Game/
路径下的League of Legends.exe
程序创建一个快捷方式。 - 将回放文件
*.rofl
拖拽到快捷方式上即可观看。
但现在(2020 年 8 月)使用官方提供的方法进行操作,会启动英文客户端,汉字显示为乱码,需要通过参数指定中文,具体操作如下:
- 在
英雄联盟/Game/
路径下进入命令行。 - 拖拽
League of Legends.exe
到命令行。 - 输入空格。
- 拖拽回放文件
*.rofl
到命令行。 - 输入空格。
- 追加参数
-Region=TENCENT -Locale=zh_CN -SkipRads -SkipBuild
,回车即可。
示例如下:
1 | $ '/d/Game/WeGameApps/英雄联盟/Game/League of Legends.exe' '/c/Users/Administrator/Documents/League of Legends/Replays/WT1_NEW-3219734716.rofl' -Region=TENCENT -Locale=zh_CN -SkipRads -SkipBuild |
Photoshop
Photoshop中找不到安装的字体
Windows 上安装的字体在 Photoshop 中“找不到”,但在其他软件中却能找到。举个例子,安装好 EVA 字体 FOT-Matisse Pro
,打开 Photoshop,在字体列表输入 Matisse
,提示未找到匹配项。
这时候就需要依次点击:编辑->首选项->文字,勾选「以英文显示字体名称」,就可以找到该字体了。如果取消勾选「以英文显示字体名称」,会发现该字体显示为 FOT-マティス Pro
。
提取线稿
制作文章头图的时候,需要一张古代医师的透明素材,这里介绍下提取线稿的方法,将 张仲景.jpg
变为 张仲景.png
。
- Photoshop 中打开图片
张仲景.jpg
; Ctrl
+A
全选图层,Ctrl
+C
复制图层;- 按
Q
进入快速蒙版,Ctrl
+V
粘贴图层,再按Q
退出快速蒙版,得到蚂蚁线; - 按
Del
删除选区内容,得到张仲景.png
。
Foobar2000
Foobar2000 是 Windows 平台广受好评的音乐播放器,其开放的组件结构允许第三方开发者扩充播放器的功能,比如集成了多种常用插件的 Foobox 。
Foobox 是一个基于 CUI 的 Foobar2000 界面配置,适合大界面使用,可适配高分屏,善于管理曲目数量大的媒体库,对音乐各种封面提供丰富的支持,并扩展了一些网络功能。美观高效实用是 Foobox 的制作目标。
媒体库
在媒体库中添加音乐文件夹,Foobar2000 会监视该目录下音乐文件的变动,搭配上智能列表,可以自适应文件名称的修改,避免出现播放时找不到文件的情况。
音乐文件夹所在盘符为 B
,这里使用了虚拟磁盘,将 Foobar 程序所在目录映射为驱动器 B
,将音乐文件放在 Foobar 程序目录下,可以实现便携效果。
启用虚拟磁盘后,对歌曲选择“打开所在文件夹”时会提示“位置不可用”,可以通过建立虚拟驱动器或映射网络驱动器来解决。
建立虚拟驱动器
subst
命令用来将路径与驱动器号关联,可以在 CMD 中执行:
1 | # 将foobar2000路径与驱动器B:关联 |
执行关联后,可以在此电脑中看到虚拟驱动器 B
:
使用 subst
建立的关联在重启后会失效,因此需要创建脚本并设为开机启动。
- 新建
substFoobar2000.bat
脚本:
1 | subst B: D:\foobar2000 |
Win
+R
运行shell:startup
打开启动目录,放入substFoobar2000.bat
脚本文件,使其开机启动。
映射网络驱动器
- 选择“映射网络驱动器”:
- 选择驱动器为
B:
,将 foobar2000 软件的路径作为映射的文件夹,并勾选“登录时重新连接”,避免重启后失效:
映射完成,即可通过 B 盘访问 foobar2000 文件夹,“打开所在文件夹”时也不再提示“位置不可用”。
智能列表
添加播放列表时可以选择添加为智能列表。Foobar2000 会根据查询模板将媒体库中符合条件的歌曲添加进该列表。
常用的模板有两种:第一种是将指定路径下的所有歌曲添加到列表;第二种是追加了条件,过滤掉缺失了 title
元数据的歌曲,可以避免将单个整轨文件添加进来。
1 | # 根据路径添加歌曲到列表 |
分组
Foobox 属于 CUI(Column User interface,分栏用户界面) 配置,而非 DUI(Default User Interface,默认用户界面)。
如果不满足默认的分组方案,在 DUI 里设置的分组是无法生效的,需要进入 Foobox 设置中新建分组模板。每次更改输入框的内容后需要按 Enter
进行保存。
通用模板
通用模板根据专辑进行分组,分组信息显示专辑名称、发布时间、艺术家和音轨数,并根据专辑发布时间进行排序。
1 | # 标签 |
Anisong模板
Anisong 模板根据专辑进行分组,分组信息显示动画名称(用注释字段 commont
进行标注)、发布时间、艺术家、专辑名称、分组时长和分组数,并根据专辑发布时间进行排序。
1 | # 标签 |
媒体服务器
如果有一台长时间运行的电脑,可以将其作为媒体服务器,局域网内的其他设备可以播放媒体服务器中的音乐。Foobox 没有内置该组件,需要去官网下载安装 foo_upnp 。
安装好 UPnP 组件后,打开 Android 或 iOS 设备上的 Foobar2000 APP,就可以在 Media Servers 中找到本地网络中的媒体服务器了。
小结
1 | # 智能歌单 |
常用字段
一般字段
语法 | 解释 |
---|---|
%title% | 音轨标题。若元数据 title 不存在则使用文件名代替。 |
%artist% | 艺术家名。依次检查下列元数据字段:artist ,album artist ,composer ,performer 。 |
%album artist% | 专辑艺术家名。依次检查下列元数据字段:album artist ,artist ,composer ,performer 。与 %artist% 不同的是 %album artist% 用于在整张专辑有不同艺术家的情况。 |
%track artist% | 音轨艺术家名。仅在 %album artist% 与 %artist% 不同的时候有效。用于与 %album artist% 共同使用以指定专辑中的不同艺术家,例如: ”%album artist% – %title%[ ‘//’ %track artist%]” ;在这种情况下,最后一部分内容仅会在有根据音轨指定的艺术家存在时才会显示。 |
%album% | 专辑名。依次检查下列元数据字段:album ,venue 。 |
%date% | 年代。使用元数据 date 字段。 |
%genre% | 流派,使用元数据 genre 字段。 |
%comment% | 注释,使用元数据 comment 字段。个人用来标注 Anisong 对应的动画名称。 |
%tracknumber% | 音轨号。仅在存在元数据 tracknumber 字段时有效。 |
%totaltracks% | 合计音轨。仅在存在元数据 totaltracks 字段时有效。 |
%discnumber% | 光盘编号。仅在存在元数据 discnumber 或 disc 字段时有效。 |
%totaldiscs% | 合计光盘。仅在存在元数据 totaldiscs 字段时有效。 |
%codec% | 编码格式名。若无法有效取得准确的编码格式,使用文件后缀。 |
%codec_profile% | 关于编码设置的附加信息,并不总是有效。 |
%filename% | 文件名,不包括后缀名和目录 |
%filename_ext% | 文件名,包括后缀名但不包括目录。 |
%directoryname% | 文件所处目录名。 |
%path% | 文件路径,注意排序时应使用 %path_sort% 而非 %path%。 |
%subsong% | 文件内的音轨编号,用于单文件支持多音轨的文件格式(例如章节和CUE)。 |
%path_sort% | 结合了音轨号的文件路径,用于排序;返回值不确定,因此不应依赖其返回值。 |
%length% | 长度,格式为 [HH:]MM:SS。 |
%length_seconds% | 长度,单位为秒,格式是整数。 |
%bitrate% | 比特率,单位为千比特每秒(kbps);支持动态 VBR 比特率。 |
%channels% | 声道数(mono/stereo/etc)。 |
%samplerate% | 采样率,单位为 Hz。 |
%replaygain_track_gain%, %replaygain_album_gain%, %replaygain_track_peak%, %replaygain_album_peak% | 播放增益相关信息。 |
%filesize% | 文件大小,单位为字节。 |
%filesize_natural% | 文件大小,将根据实际情况返回如MB或KB的形式。 |
%last_modified% | 返回文件最后更改时间,格式为 YYYY-MM-DD HH:MM:SS。 |
上下文字段
语法 | 解释 |
---|---|
%list_index% | 指定项目所在的列表编号。应用于:播放列表,由 masstagger/massrenamer 处理过的项目的列表,等等。在结果前补足0以适应列表中最大数的位数。 |
%list_total% | 指定项目所在列表的总项目数。应用于:播放列表,由 masstagger/massrenamer 处理过的列表,等等。 |
%isplaying% | 若当前项目正在播放则有效,例如: 一个播放列表项正在播放。用于 $if() 中的条件。 |
%ispaused% | 若当前项目正在播放并处于暂停状态则有效,例如: 一个播放列表项已暂停。用于 $if() 中的条件。 |
%playback_time% | 当前播放时间,格式为 [HH:]MM:SS。仅在某些使用播放上下文信息的地方有效,例如状态栏。 |
%playback_time_seconds% | 当前播放时间,单位为秒。格式为整数。仅在某些使用播放上下文信息的地方有效,例如状态栏。 |
%playback_time_remaining% | 剩余播放时间,格式为 [HH:]MM:SS。仅在某些会使用播放上下文信息的地方有效,例如状态栏。若当前播放音轨无持续时间信息则无效。 |
%playback_time_remaining_seconds% | 剩余播放时间,单位为秒。格式为整数。仅在某些使用播放上下文信息的地方有效,例如状态栏。若当前播放音轨无持续时间信息则无效。 |
%queue_index% | 指定项目所处队列的编号,仅对播放列表有效。 |
%queue_indexes% | 指定项目所处队列的编号列表,仅对播放列表有效。当指定项目仅在队列中出现一次则与 %queue_index% 等价。 |
%queue_total% | 队列的项目总数。由于技术上的原因该字段仅对属于队列中音轨有效。 |
函数
语法 | 解释 | 示例 |
---|---|---|
$abbr(X) | 返回 X 的缩写。 | $abbr(%album%) |
$abbr(X,Y) | 若 X 的长度不大于 Y,则返回 X 的缩写,否则返回 X。 | $abbr(%album%,5) |
$ansi(X) | 返回字符串 X 中属于当前代码页的部分,否则替换为相应最适合的字符。一般用于清理文件名与外部一些对Unicode支持不好的软件交互。 | $ansi(%title%), $ansi(%filename%) |
$ascii(X) | 返回字符串 X 中属于ASCII表部分,否则替换为相应最适合的字符。一般用于与外部一些对Unicode支持不好的软件交互。 | $ascii(%title%), $ascii(%filename%) |
$lower(X), $upper(X) | 将 X 转换到小写/大写。 | $upper(%title%) |
$num(X,Y) | 显示数字 X 并在前补足0使其长度不小于 Y (用于音轨号等)。 | $num(%tracknumber%,3) |
$caps(X) | 将所有单词的第一个字母转换为大写,所有其他字母转换为小写,例如: “blah BLAH” ⇒ “Blah Blah”. | $caps(%title%) |
$caps2(X) | 类似于 $caps,但是不改变已为大写的字母,例如: “blah BLAH” ⇒ “Blah BLAH”. | $caps2(%title%) |
$if(X,Y,Z) | 若 X 包含了至少一个有效字段,则执行/显示 Y, 否则执行/显示 Z。 | $if(%artist%,%artist%,unknown artist) |
$if2(X,Y) | 与 $if(X,X,Y) 相同。 | |
$if3(X,Y,Z,..) | 返回首先包含至少一个有效字段的参数。 | |
$ifgreater(A,B,C,D) | 若数字 A 大于 B, 则执行/返回 C,否则执行/返回 D。 | |
$iflonger(A,B,C,D) | 若字符串 A 长度大于 B,则执行/返回 C,否则执行/返回 D。 | |
$ifequal(A,B,C,D) | 若数字 A 等于 B,则执行/返回 C,否则执行/返回 D。 | |
$longest(A,B,C,….) | 比较字符串 A,B,C,…并返回最大长度的字符串。 | $longest(%title%,%filename%) |
$len(X) | 返回字符串 X 的长度。 | |
$pad(X,Y), $pad_right(X,Y) | 对字符串 X 前/后补足空格使其长度不小于 Y。 | |
$pad(X,Y,Z), $pad_right(X,Y,Z) | 对字符串 X 前/后补足字符 Z 使其长度不小于 Y。 | |
$cut(X,Y) | 截取 X 使其长度为 Y。 | |
$padcut(X,Y), $padcut_right(X,Y) | 对字符串 X 前/后补足空格,并截取结果使其长度不大于 Y。 | |
$insert(A,B,N) | 向字符串 A 中 N 个字符后插入字符串 B。 | |
$add(X,Y), $sub(X,Y), $mul(X,Y), $div(X,Y), $mod(X,Y), $min(X,Y), $max(X,Y) | 数学运算,依次为:加、减、乘、除、取模、最小值、最大值。 | |
$left(X,Y) | 返回字符串 X 的头 Y 个字符。 | |
$right(X,Y) | 返回字符串 X 的后 Y 个字符。 | |
$and(X,Y), $or(X,Y), $xor(X,Y), $not(X) | 逻辑运算符,依次为:与、或、异或、非。用于与 $if() 协作。 | |
$fix_eol(x), $fix_eol(x,y) | 截取多行字符串,在字符串尾添加 ” (…)” (第一个版本) 或 y (第二个版本)。 | |
$meta(X) | 返回元数据字段 X 的值。 | $meta(artist) |
$meta_sep(X,Y), $meta_sep(X,Y,Z) | 返回元数据字段 X 中的值,对于多值情况,加上自定义分隔符。 | $meta(artist,’, ‘,’ and ‘) ⇒ “artist1, artist2 and artist3” |
$meta_num(X) | 返回元数据字段 X 中值的数目。 | |
$info(X) | 返回名为 X 的技术信息。 | $info(bitrate) |
$char(X) | 插入编号为 X 的 Unicode 字符。 | $char(9674) |
$strcmp(X,Y) | 当字符串 X 和 Y 相同时返回 “1”,否则返回空字符串,用于与 $if() 协同使用。 | |
$stricmp(X,Y) | $strcmp(X,Y) 的不区分大小写版本。 | |
$directory(X), $directory(X,N) | 从文件路径 X 中提取目录名,附加选项指定提取上 N 级目录名。 | $directory(%path%,2) |
$directory_path(X) | 从文件路径 X 中获取相应目录路径。 | $directory_path(%path%) |
$greater(X,Y) | 比较两个整数,检测是否 X > Y,用于与 $if() 和 逻辑运算符共同使用。 | |
$longer(X,Y) | 比较两个字符串,检测是否 X 长度大于 Y,用于与 $if() 和 逻辑运算符共同使用。 | |
$strchr(X,Y) | 查找字符串 X 中字符 Y 首先出现位置。 | |
$strrchr(X,Y) | 查找字符串 X 中字符 Y 最后出现位置。 | |
$strstr(X,Y) | 查找字符串 X 中字符串 Y 中首先出现位置。 | |
$progress2(A,B,C,D,E) | 创建进度条。(版本2) | $progress2(%playback_time_seconds%,%length%,20,’#’,’=’) ⇒ ”#####===============” |
$select(N,A,B,C,….) | 返回从 A,B,C… 的第 N 个参数。 | |
$repeat(X,N) | 重复X N 次。 | |
$replace(A,B,C) | 将字符串 A 中所有出现的字符串 B 替换为字符串 C。 | |
$ext(X) | 从文件名/路径 X 中提取后缀名。 | $ext(%path%) |
$substr(A,B,C) | 返回 A 的子串,从第 B 个字符到 第C 个字符。 | $substr(blah,1,2) ⇒ “bl” |
$trim(A) | 移除字符串 A 中首/尾空白字符。 | $trim(%title%) |
$tab() | 生成一个制表符,等同于 $char(9)。参见下面 “Tab(制表符)” 以获取详尽信息。 | $tab() |
$stripprefix(X) | 将前缀 “A” 和 “The” 从X中移除。 | $strippefix(%artist%) ⇒ “The Prodigy” 变为 “Prodigy” |
$stripprefix(X,prefix1,prefix2,…) | 将指定前缀从 X 中移除。 | $stripprefix(%artist%,a,the) ⇒ “The Prodigy” 变为 “Prodigy” |
$swapprefix(X) | 将前缀 “A” 和 “The” 移动到 X 尾。 | $swapprefix(%artist%) ⇒ “The Prodigy” 变为 “Prodigy, The” |
$swapprefix(X,prefix1,prefix2,…) | 将指定前缀移动到 X 尾。 | $swapprefix(%artist%,a,the) ⇒ “The Prodigy” 变为 “Prodigy, The” |
$year(time) | 从时间/日期字符串中得到“年”(格式为4位数字)。 | $year(%last_modified%) |
$month(time) | 从时间/日期字符串中得到“月”(格式为2位数字)。 | $month(%last_modified%) |
$day_of_month(time) | 从时间/日期字符串中得到月中的第几天(格式为2位数字)。 | $day_of_month(%last_modified%) |
$date(time) | 从时间/日期字符串中得到日期信息(格式为 YYYY-MM-DD)。 | $date(%last_modified%) |
$time(time) | 从时间/日期字符串中得到时间信息(格式为 HH:MM:SS 或 HH:MM)。 | $time(%last_modified%) |
变量操作
- 变量允许你立即保存文本处理的结果减少冗余格式化文本。
- 变量不能在多个运行实例中进行交换,并且无法修改实际文件信息。
- 变量的作用仅仅是缩短过于复杂脚本的尺寸,而不是有其它作用。
语法 | 解释 | 示例 |
---|---|---|
$put(name,text) | 设置名为 name 的变量的值为 text 并且返回 text。 | “$put(x,blah)” 设置变量 x 为 “blah” 并且返回 “blah”. |
$puts(name,text) | $put() 的静默版本。与 $put(name,text) 作用相同,但返回空字符串。 | |
$get(name) | 返回名为 name 的值,若变量不存在,返回空字符串。 | “$puts(x,blah)$get(x)$get(x)” 返回 “blahblah” |
其它
语法 | 解释 | 示例 |
---|---|---|
[ …. ] | 若字段不存在引用则丢弃方括号中的所有内容。主要用于创建部分仅在相关字段有效时的格式化脚本。 | %artist% – [%album% / ]%title% |
‘ (单引号) | 插入指定文本忽略语法处理;允许有特殊字符比如”%”、”$”、”[“和”]”。若需要在文本中插入单引号,可以使用 ” (两个单引号)。 | |
// | 注释,仅能用于行首;注释后的文本从行首到行尾不会被解析。 | |
EOL字符 | 忽略; 你可以使你的脚本拆分为多行以增加可读性,而不会影响结果。 | |
Tab(制表符) | 用于对特定上下文文本进行对齐,例如状态栏。参见: $tab() | %title%$tab()%length% |
颜色控制: < > | 用于控制文本颜色的深浅,现在可用于播放列表和状态栏.深浅都有3个级别,可通过重复颜色控制字符控制级别. | <浅> >深< >>更深<< |
整理CD
目标:将所有歌曲转换为 flac 单曲的形式,并以 YYYY-MM-DD
格式记录发行日期。
场景:下载了大量 CD,每张专辑一个文件夹,文件夹名称为常见的 [YYMMDD] 专辑名称 (文件格式)
格式,其中的音乐文件存在 cue
+ wav/flac
单轨文件的组合,其中单轨文件为日本的编号 字母-012[3]
格式。
工具:everything,Foobar2000。
方法:
用 everything 找到所有的
cue
文件,拖入 Foobar2000:1
H:\\music\\OST\\Anime OST\\冰菓\\.+\\\w{3,4}\-\d{3,4}.*\.cue