本地批量处理(主界面)
115 网盘批量改名(确认弹窗)
NameTool 是一款批量文件处理工具(字幕 / 媒体 / 任意格式),支持:
- 拖入即自动分析(ffprobe 读取视频信息)
- 字幕文件内容编辑模式(SRT/ASS 自动清理外文字幕,编辑器自带「保存」「另存为」)
- 批量替换(含通配符)
- 文件名添加/删除规则
- 批量删除行
- 按语言删除字幕内容(「删除字幕外语」区内自带「开始处理」,只删语言、不改名)
- 按范围处理(本地列表按「参与」复选框、网盘列表按选中项,未勾选 / 未选中的条目原样不动)
- 115 网盘接入(内嵌浏览器网页登录授权 / 扫码登录 / 手动填 Cookie、目录浏览、改名效果预览列、文件与文件夹批量改名、移动到 / 复制到 / 删除)
- 自动检查更新
不限文件格式:任意文件都能拖入、显示、批量改名(含无扩展名的文件)。
.srt/.ass/.txt:除了改名,还会读取并修改正文(字幕过滤、批量替换、删除行)- 其余任何扩展名(含无扩展名):只改名 / 复制,绝不按文本读取(二进制文件不会被读坏)
窗口布局:左侧「文件列表」与右侧「功能区」宽度比是 2 : 1(列表区占约 2/3,v1.8.1 起由 3 : 2 调整)。 窗口拉宽 / 收窄时两边同步缩放:列表区的「原文件名」「预览」列会跟着一起变宽。 功能区有自己的最窄宽度 420px(再窄排版就挤不下),列表区最窄 500px,窗口最小宽度 1040px。 功能区内部的输入框、下拉框、按钮全部随宽度自适应;一行放不下时自动换行, 不会出现输入框或按钮被硬裁、或两行控件叠在一起的情况。
表格列宽的调整会被记住(v1.8.2 起):把鼠标放到两个列表的表头分隔线上拖动即可调整列宽, 松开鼠标后自动保存,下次启动程序用的就是你最后调整好的列宽。本地文件列表与 115 网盘列表各记各的。 没有拖过的列仍是
*(星号)宽度,会继续跟着窗口一起伸缩,不会被这次改动锁死。 拖坏了(比如把某列拖得看不见了)就在列表上点右键 →「重置列宽为默认」,恢复初始列宽并清掉记录。 记录文件是 exe 同级的data\column-widths.json;若该目录不可写(安装版装到Program Files时可能如此), 会自动改用%LOCALAPPDATA%\NameTool\—— 两种情况都能记住。
程序根据文件类型自动切换显示模式:
- 列表模式(非文本类文件的默认落点):DataGrid 列表展示,支持批量改名
- 内容编辑模式(字幕 / 文本
.srt/.ass/.txt):拖入后自动加载内容,进入文本编辑器- 图标、列表、排序对任意格式一视同仁;未识别的扩展名用通用文档图标,不会因为「格式不支持」而空白
进入编辑模式后,列表上方的工具栏会换成编辑专用工具条:最左边是橙色实心的「← 返回列表」按钮(也可直接按 Esc),然后是「保存」「另存为…」,右边显示当前编辑的文件名与保存反馈。
- 保存:把编辑器里的内容原样写回这个文件(保持原编码),不套用右侧任何规则;改完就存,不必走「开始处理」
- 另存为…:另存成另一个文件,原文件不动,列表里的条目也仍指向原文件
- 用「删除字幕外语」的开始处理删过语言、或用「开始处理」处理过之后,编辑器内容会与磁盘对齐 —— 再点「保存」不会把刚删掉的内容写回去
- 返回列表不会丢掉刚改的内容(内容留在该文件那一行里,再点开还在)
- 返回后可以再点同一行重新进入编辑器
- 编辑模式不再占用文件工具栏,所以「返回列表」不会被挤到窗口之外
字幕文件拖入后自动执行:
- 读取文件内容(自动识别 UTF-8 / GB18030 / Unicode 等编码)
- 根据右侧"删除字幕外语"勾选项自动过滤外文段落
- SRT 格式:按字幕块过滤,保留时间轴,删除纯外文文本行
- ASS 格式:按
\N拆分段落逐段判断,删除纯外文段落,保留样式标签(如{\an3\fs30}) - 切换语言复选框实时更新编辑器内容
- 添加文件、添加文件夹
- 支持拖拽导入(任意格式,文件与文件夹都可以直接拖进来;含无扩展名的文件)
- 可选递归扫描文件夹
- 工具条上的「繁=>简」:把文件名与字幕正文里的繁体字一次转成简体(详见 12))
- 列表展示:参与、原文件名、预览、状态
- 列宽可拖动调整并记忆:拖表头分隔线改列宽 → 自动保存 → 下次启动照旧;右键「重置列宽为默认」可还原(详见「窗口布局」)
- 只处理勾选的文件:列表第一列「参与」是复选框,只有勾上勾的文件才会被改名 / 改内容,取消勾选的行原样不动
- 新加入的文件默认全部勾选,所以「加文件 → 直接点开始处理」的老用法完全不变
- 列表下方有处理范围条,实时显示「已勾选 3 / 共 12 个文件」,并带「全选 / 全不选」按钮
- 一个都不勾选时按「处理全部」执行,范围条会用醒目红字写明「未勾选任何文件 → 将处理全部 12 个文件」,不会让人意外
- 「预览」列里的序号跟着勾选范围算:只勾了一部分时,编号就是这一部分内部的编号(与实际执行的编号一致)
- 未勾选的行「预览」留空(鼠标悬停提示「未勾选,本次不会处理」)——不会因为改了规则而跟着变,一眼就能看出哪些行会被处理
- 点复选框不会顺带选中该行(否则字幕文件会立刻跳进编辑器),勾选和看内容互不打扰
- 「原文件名」列可点表头排序:按文件名字逐字比较(中文按拼音、忽略大小写),点一次降序、再点一次升序
- 排序会真的重排文件顺序并同步重算「预览」里的序号,所以预览显示的编号始终和眼前的行序一致
- 已选中的行在排序后仍保持选中(每行列内带类型图标)
- 状态图标:
- 处理中(蓝)
- 成功(绿)
- 失败(红)
- 支持多条"查找/替换"规则
- 每条规则支持多行输入
- 支持通配符查找与替换引用
- 查找端:
###:任意数字*:任意文本?:单字符
- 替换端:
###:引用对应捕获组
- 文件名前添加
- 文件名后添加
- 定位文字前/后添加
- 删除"文件名中的"指定文本
- 从第 N 个字符开始删除 M 个字符
- 按定位字前/后删除
文件名相关处理基于文件名主体(不含扩展名)计算,扩展名保持不变。
- 可按行号范围删除(含起止行)
- 删除英文字幕
- 删除日文字幕(平/片假名识别)
- 删除韩文字幕
- 区内自带「开始处理」按钮:勾选语言后点它,只做这一件事 —— 按勾选过滤字幕正文并写回文件
- 不改文件名、不套用替换规则与序号规则,与右侧其它规则互不干扰
- 只作用于
.srt/.ass/.txt;其它文件直接跳过(一个字节都不动),结果里会写明跳过几个 - 没勾任何语言就点,会提示先勾选,不会误处理
勾选后拖入字幕文件自动生效,也可随时切换实时更新编辑器内容。
- 覆盖原文件(默认)
- 或输出到指定目录(不勾「覆盖原文件」时,下面的目录框与「选择目录」按钮才可用)
- 覆盖时创建
.bak备份(小勾选,默认勾上)
- 列表模式提供实时预览列
- 可打开日志窗口查看处理过程与结果
- 点击"检查更新"自动连接服务器比对版本
- 无更新时提示"当前版本已是最新版本"
- 有更新时显示版本号和文件大小,确认后自动下载
- 下载完成后提示安装,确认后启动安装包并关闭程序
文件列表顶部提供「115网盘」按钮,无需开发者资质,用个人 115 账号即可授权。
登录方式(按优先级排列,登录窗口里也是这个顺序)
- 网页登录(推荐,默认):程序内嵌一个浏览器窗口打开 115 官网,你直接在里面登录即可(可扫页面上的二维码,也可点「使用账号登录」用账号密码 / 短信登录)。登录成功后程序自动读取凭据并完成授权,不需要手动做任何复制操作。
- 程序会把页面里的登录二维码同步成与本程序「扫码登录」同源的那一张(
yun.115.com/scan/dg-{uid},同一个 uid,会话不变)。原因是 115 网页版自己生成的那路二维码授权不到网页会话,直接用手机扫它常常「扫码成功却没有授权」 - 状态行会实时显示页面状态:等待扫码 / 已扫码请在手机上确认 / 二维码已刷新 / 页面里没有二维码
- 二维码过期或页面报网络异常时自动刷新(4 秒内最多刷一次)
- 凭据含 HttpOnly 项,只有内嵌浏览器方式能完整拿到
- 内嵌浏览器使用独立数据目录,115 的登录状态可跨会话保留,下次打开常常免登录
- 支持「换账号」一键清除内嵌浏览器登录状态后重新登录
- 程序会把页面里的登录二维码同步成与本程序「扫码登录」同源的那一张(
- 扫码登录:程序展示 115 官方登录二维码,用手机「115」App 扫码并在手机上确认(切到该页签才会去取二维码)
- 手动填 Cookie(兜底):在系统浏览器登录 115 后,把请求头里的 Cookie(含
UID/CID/SEID)粘贴进来,支持「从剪贴板粘贴」 - 登录凭据保存在
data\115-account.json,下次启动自动复用;失效时会提示重新登录
内嵌浏览器依赖系统的 Microsoft Edge WebView2 Runtime(Win10/11 一般自带,本机为 154.x)。若缺失,登录窗口会提示并可改用扫码或手动填 Cookie。
浏览
- 顶部按钮行:返回本地列表(橙色实心)、根目录、刷新、移动到…、复制到…、删除、重新登录,右侧是账号与退出登录
- 按钮行下方是独占一行的路径栏,从上到下逐级列出:
路径:根目录 > 一级目录 > 二级目录 > 三级目录,层级再深也不会挤在一起,长了可横向滚动;每一节都是纯文字链接(无边框、无底色、不带图标),点击即可跳到该层级 - 列表第一行是「返回上级」(灰色底、
↑图标),双击它回到上一级。原先放在工具栏上的「↑ 上级」按钮已移除,返回上级的功能收进了列表里 - 双击文件夹进入下一级;状态栏显示完整路径与项数(如「根目录 > 媒体库:共 26 项,已载入 26 项」);目录一项都没有时,列表中央会明确提示「当前目录为空」,不会只剩一片空白
- 目录与文件都带类型图标(24×24):文件夹是黄色文件夹、字幕、文本、音频、视频、PDF、Word、表格各有专属图标,未识别的类型用通用文档图标;文件名按扩展名自动匹配,无需配置
- 文件夹图标区分「打开 / 未打开」:列表里未被选中的文件夹是闭合态,被选中的文件夹显示为打开态(路径栏不使用图标,只显示目录名文字)
- 列表按「文件夹在前、文件在后」排列,文件夹行有浅蓝底色、文件行相对缩进,一眼能看出分组
- 图标素材是矢量(
Resources\Icons.xaml,由Images\ico\*.svg生成),任何 DPI 下都清晰,且不产生额外外置文件
- 点列头排序:「名称」「类型」「大小」「修改时间」四列可点表头排序,点一次降序、再点一次升序(列头会显示当前方向的箭头)
- 列宽可拖动调整并记忆:与本地文件列表同一套机制,但各记各的(改 115 列表的列宽不会影响本地列表);右键「重置列宽为默认」可还原
- 文件夹始终置顶:文件与文件夹同时存在时,两类各自成组、组内单独排序——按「大小」降序也不会把文件排到文件夹前面
- 每次重排都保持「返回上级」在第一行
- 「修改时间」按时间先后排(不是按显示出来的那串文字排),服务端没给时间的条目排在最后(升序时最前)
- 排序后原有的多选会被保留,并按新顺序重排(批量序号与眼前看到的顺序一致)
- 列表的「修改时间」按本地时区显示为
yyyy-MM-dd HH:mm(115 接口返回的是 Unix 秒,程序内部换算后才显示) - 「预览」列 = 改名效果:紧跟在「名称」后面,按右侧功能栏当前规则实时算出每个条目改名后叫什么,改规则时整列立刻跟着变,不用先执行再看结果
- 蓝字加粗 = 按当前规则这一项会被改名;灰字 = 算出来和原名一样、不会变;红字 = 规则参数不合法,红字内容就是原因(例如「文件名删除:删除个数必须为正整数」)
- 改名只作用于选中的条目,预览也严格按这个范围显示:选中的行用「选中顺序」编号(就是实际执行时会用到的序号,蓝字加粗);未选中的行预览留空(悬停提示「这一项没被选中,本次不会改名」)——调整批量序号等规则时,未选中行的格子不会跟着变,不会被误认为也要改名
- 一个都没选中时全部行都显示预览,按「同类条目在当前显示顺序里的位置」编号:文件夹和文件各自从「批量序号起始」重新开始(因为 115 要求两类分开改名,实际执行时的序号就是这样),按「大小」等重排后序号也会跟着重算
- 文件名较长被省略号裁切时,鼠标悬停在「预览」上会显示「原名 → 新名」的完整内容
- 「返回上级」是导航行,没有预览;「预览」列不参与排序(它是算出来的结果)
- 选择方式与资源管理器一致:单击选中、
Ctrl加选、Shift连选;「返回上级」这一行不参与多选统计
移动到 / 复制到 / 删除
- 选中若干条(文件、文件夹都可以,也可以混选),点 移动到… 或 复制到…,会弹出目标文件夹选择器:
- 打开时会自动回到上次用过的目标目录(「移动」与「复制」各记各的,互不干扰), 省掉每次都从当前目录重新点进去;此时路径栏右侧会标出「(上次使用的位置)」, 若记忆里的目录已被删除/改名,会自动退回当前目录并忘掉那条记忆
- 点路径栏里的任意一节可以直接跳到那一层,不用逐层点「返回上级」
- 逐层进入目标目录,双击文件夹进入下一级,「↑ 返回上级」「根目录」「刷新」辅助导航,顶部实时显示当前完整路径
- 点「确定」表示放进当前所在的那一层(当前目标显示在按钮左侧的「目标:…」一行, 按钮本身保持简短)
- 只有点了「确定」的那一层才会被记成「上次用过的目标目录」(中途路过的目录不算)
- 正在被移动/复制的文件夹自身不能作为目标(会禁止进入它的子树,并在按钮上提示「不能选这里」)
- 正在被移动/复制的文件夹自身不允许进入,从交互上就杜绝了「把文件夹放进它自己里面」
- 目标与当前目录相同、或目标落在待移动文件夹的子树里,都会被拦下并提示
- 确认框会列出将要处理的条目(最多 12 条)与完整目标路径,再执行
- 一次请求带多条(
fid[0]、fid[1]…)而不是一条一个请求,所以选几十项也只是一次调用 - 移动成功后这些条目会立刻从当前列表消失;复制不会改动原位置
- 删除:进 115 回收站(可在 115 网页版「回收站」恢复),确认框默认按钮在「否」上,避免回车误删。115 的删除是异步的,若同一目录上一次删除还没跑完会返回
990009,程序会把服务端原文提示出来,稍后再试即可
批量改名
- 底部操作区分两行:上行是选择摘要 + 状态提示,下行是操作按钮(按「选择」与「改名」分组,组间有竖线分隔)
- 选择组:
只选文件/只选文件夹/清除选择 - 改名组:
撤销改名/繁=>简/ 按规则重命名(蓝色实心主按钮,文案会随选择内容变化)
- 选择组:
- 列表里的「预览」列会逐行显示改名后的名称,改右侧规则时即时刷新,执行前就能确认整批结果
- 只对选中的条目显示:未选中的行留空,调规则时它们不会跟着变,能一眼看出这次到底会改哪些
- 确认后逐条调用 115 接口改名,可「撤销改名」回滚(可连续回退)
- 改名规则完全复用右侧功能栏:批量替换、批量序号、文件名前/后添加、按定位字添加、按字符位置/定位字删除
- 文件和文件夹都能单个或多个批量改名,但二者必须分开进行:同一批选择里若既有文件又有文件夹,程序会拒绝执行并提示先分开选
- 只选文件 → 批量改文件名,扩展名保持原样
- 只选文件夹 → 批量改文件夹名,整名作为主体参与规则计算(不拆分扩展名)
- 改名按钮文案会随选择内容变化(如「重命名选中的 3 个文件夹」)
- 名称长度按 UTF-8 计算,超过 115 的 255 字节上限会在执行前拦下
- 注:移动 / 复制 / 删除不要求分开,文件和文件夹可以混选一起处理
115 的访问频率限制(实测结论,重要):程序内所有网盘请求统一做了节流(约每 250ms 最多一次), 外加上限 2 次的自动重试,正常浏览不会触发。
如果在很短时间内反复刷新、连续快速切换大量目录,115 侧的 WAF 会临时拦住本机对
/files接口的访问: 表现是接口返回HTTP 405,此时打不开任何目录。已实测确认的边界(不必惊慌):
- 登录态不会失效,不需要重新登录或重新扫码;
- 不是整台机器被封——同一时刻首页、账号信息等其它接口都正常,只有取目录列表的接口被拦;
- 实测阻断可持续 20 分钟以上,所以「等一两分钟」往往不够。出现时状态栏会写明, 请停止任何操作等待(包括别再点刷新),反复请求只会让它更久。
改名操作同样计入频率限制,程序会在每条改名之间自动限速,请勿一次性选中过多条目。
本地文件列表与 115 网盘列表各有一个「繁=>简」按钮,点一下就把繁体中文转成简体。
- 本地列表:文件名与字幕正文一起转
- 文件名:只转主干,扩展名原样保留(
繁體字幕_測試.srt→繁体字幕_测试.srt) - 字幕正文:
.srt/.ass/.txt一并转换并写回;其它格式(含.mkv/.zip等)只改文件名,一个字节都不读 - 覆盖前会留
.bak(若已勾选「覆盖时创建 .bak 备份」),改错了还能找回 - 处理范围同样是勾选的文件(一个都没勾选则处理全部)
- 不套用右侧的替换 / 序号 / 添加删除规则 —— 这个按钮只做「繁转简」这一件事
- 幂等:已经是简体的文件会明确报告「已是简体,无需修改」,不会重复写盘、也不会平白多出一堆
.bak
- 文件名:只转主干,扩展名原样保留(
- 115 网盘列表:把选中条目的名称转成简体(只改名字;网盘上的文件内容不会被读取或改写)
- 与按规则改名一样,文件与文件夹需要分开选;改错了点「撤销改名」回滚
- 词典来源:主表取自 HanLP 的
data/dictionary/tc/t2s.txt(与 quick-chinese-transfer 同源), 另用 OpenCC 的 TSCharacters / TSPhrases 补齐,共约 4800 条(内嵌在程序内,无需联网) - 采用词语优先的匹配方式:
乾隆不会被单字规则乾=干误转成干隆,一目瞭然会整体转成一目了然
- 将
.srt/.ass/.txt文件拖入程序(也可与其它格式一起拖入,程序会分别对待) - 程序自动加载内容并根据勾选项过滤外文字幕
- 在编辑器中查看/修改内容
- 可随时切换语言过滤选项实时更新
- 改完可选两种出口:
- 点编辑工具条上的「保存」原样写回(或「另存为…」存到别处)
- 或在右侧勾好规则后点「开始处理」,按规则批量处理并写回
- 只想删掉某种语言:勾上「删除字幕外语」里的语言,点该区内的「开始处理」即可(不动文件名)
- 将任意格式的文件拖入程序(
.mp4/.mkv/.mp3/.zip/.jpg… 乃至无扩展名的文件都行) - 配置替换规则和(可选)文件名规则
- 非
.srt/.ass/.txt的文件只按文件名处理,正文不会被读取或改写
- 非
- 在功能区顶部的「处理方式」一行里选择覆盖原文件或输出到目录(覆盖时默认留
.bak备份) - 按需取消勾选不想动的文件(列表第一列「参与」):只有勾选的会被处理
- 想只处理一部分:勾掉其余的行,下方范围条会显示「已勾选 3 / 共 12 个文件」
- 没做任何取消勾选时,就是处理全部,和以前一样
- 点击"开始处理"或"批量处理",确认框会写明这次会动几个文件
- 在预览和日志中查看结果
只想把繁体转成简体,不必配任何规则:直接点工具条上的「繁=>简」即可(文件名 + 字幕正文一起转)。
- 点击文件列表顶部的「115网盘」,首次使用先完成授权(默认走「网页登录」,在内嵌浏览器里登录一下即可)
- 在列表中双击进入目标目录(首行「返回上级」、工具栏「根目录」或路径栏任意一节都可快速切换)
- 在右侧功能栏配置改名规则(批量替换 / 批量序号 / 添加删除)
- 配置的同时看列表里的「预览」列:蓝字表示这一项会被改名,灰字表示不变,红字说明规则参数有问题
- 在列表中单击、
Ctrl或Shift多选需要改名的条目 —— 只有选中的条目会被改名- 改文件:只选文件
- 改文件夹:只选文件夹(与文件不能同批)
- 想整目录一起改,用底部的「只选文件」「只选文件夹」一键全选,此时「预览」列显示的就是实际会用到的序号
- 没选中的行「预览」会淡化,一眼就能看出「本次不动它们」
- 点击底部改名按钮(文案会显示将改动几个文件/文件夹),确认预览后执行
只想把名称里的繁体转成简体:选中条目后点「繁=>简」就行,不用配规则(同样要求文件与文件夹分开选)。
- 进入 115 网盘,在多选下选中要处理的条目(文件和文件夹可以一起选)
- 点顶部「移动到…」或「复制到…」,在弹出的选择器里逐层进到目标文件夹
- 左侧「目标:…」显示即将放进哪一层,确认无误后按「确定」执行
- 要移动的文件夹本身不能进入(防止把文件夹放进它自己)
- 确认框里核对条目清单与完整目标路径,确认后一次请求完成
- 要删除就点顶部「删除」,确认后进 115 回收站;误删可在 115 网页版的「回收站」里恢复
- 框架:.NET 9 / WPF
- 运行时:自包含单文件(无需安装 .NET 运行时)
- 内嵌浏览器:Microsoft Edge WebView2(复用系统已装的 WebView2 Runtime,不随包分发)
- NuGet 源:项目内
NuGet.Config使用国内镜像(本机直连 nuget.org 会 SSL 失败) - 版本号维护:仅修改
NameTool.csproj中的<Version>,发布时自动同步 - 安装包:Inno Setup 编译
NameToolSetup.iss,版本号从发布产物的ProductVersion自动读取 - 升级不影响登录状态:115 的登录凭据、序号预设、列宽记录都不会因为升级而丢失
- 安装包不含
data\(用户数据目录),也不会在升级/卸载时删除它 - 安装器会在升级前先把旧版的
data\备份出来,装完再放回 —— 覆盖「从旧版本升上来」这一跳 - 程序自身还会把凭据在
%LOCALAPPDATA%\NameTool留一份副本,即使换了安装目录也能找回 - 只有手动卸载并明确选择「删除程序数据」时才会清理这些数据
- 安装包不含
- 更新服务:
https://svr.jcsit.cn/NameTool/update/- 客户端取列表里版本号最高的
NameTool_v{版本}_Setup.exe,所以上传的文件名必须保持这个格式
- 客户端取列表里版本号最高的
- 繁简词典:
Resources\t2s-dict.txt,以内嵌资源随主程序打包(不散落到发布目录,绿色单文件形态不变)。 主表 HanLPtc/t2s.txt,补表 OpenCCTSCharacters/TSPhrases,约 4800 条;转换逻辑在Services\ChineseConverter.cs(按首字索引 + 最长匹配优先)。改词典要重新生成并覆盖该文件,不要手工增删行。

