# rename **Repository Path**: meth-nylon/rename ## Basic Information - **Project Name**: rename - **Description**: util for renaming file - **Primary Language**: C++ - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2023-08-18 - **Last Updated**: 2023-09-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: 重命名工具 ## README ## 重命名工具 ## 介绍 本项目用于对特定文件模式进行重命名 ## 教程 使用 "路径#输入模式#自定义变量#自增变量#输出模式" 的格式来重命名文件. ### 路径 将所有需要重命名的文件放到特定的路径中, 注意不要放到该路径的子路径中. ### 输入模式 输入模式由常量字符串和变量组成, 其中变量由一对尖括号包裹, 并在分号后指定其类型. 变量类型可以是: n位数码(dn), 一个整数(n), n个英文字符(ln), 一个单词(w)或n个字符(xn) ``` dn: n 位数码(digit) n: 1 个整数(number) ln: n 个字母(letter) w: 1 个单词(word) xn: n 个字符 ``` 范例: ``` MOV.... ``` 该输入模式包括: ``` MOV. 常量字符串 Y 4 位数码 . 常量字符串 M 1 个数字 . 常量字符串 D 1 个数字 . 常量字符串 suffix 1 个单词 ``` 该模式能够匹配诸如 "MOV.2099.12.31.avi" 的文件名. 数码digit和数字number的区别在于dn只能匹配n位自然数, 但n可以匹配任意长度整数, 比如d4能匹配1924, 2000, 0003等. 而n可以在其基础上额外匹配-1, 65536, 114514等. 字母letter和单词word的区别类似. ### 自定义变量 如果你的输出文件名包含输入模式以外的新变量, 则需要在自定义变量中声明, 声明方法和输入模式类似, 并给定其初始值. 范例: ``` =0=12 ``` 所有的自定义变量都必须是number类型, 否则无法用于作为自增使用, 故无需声明类型. ### 自增变量 如果某个变量需要在每次重命名后自增, 你就可以把它放到这里, 前面已经提过只能自增number类型. example: ``` ``` 每次命名后, 这些数字都会自动加1. 注意第一次自增发生在第一次重命名之前, 也就是说如果你希望让count以1开始, 你需要给count初始值设为0. ### 输出模式 输出模式和输入模式相似, 在这里可以直接使用所有变量. 范例: ``` YearMonthDate . ``` 当需要生成类似001, 010, 100这类由0补全到一定长度的情况, 可以在number类型后加长度, 注意只有number可以如此操作, digit不行(digit位数恒定,直接在输出模式上写0就行). 范例: ``` YearMonthDate . ``` 此时M和D会用0补充到2位,如果M和D本身在两位或以上则不受影响. ### 使用演示 典型的输入如下: ``` ".#MOV_ .#=0##Film --()." ``` 假定当前目录下有以下5个文件: ``` MOV_20220315 1022brand.avi MOV_2022315 1022brand.mp4 MOV_20201215 1022brand.avi MOV_202012151022brand.avi MOV_20220315 1022brand.mp4 ``` 第二个, 第四个和第五个文件无法匹配输入模式: - 第二个文件不能匹配 - 第四个文件缺少空格常量字符串 - 第五个文件后缀mp4不是纯单词, 不能匹配\ 程序会跳过它们并给出警告. 第一个和第三个文件将被重命名为: ``` Film 2022-03-15(1).avi Film 2020-12-15(2).avi ``` 如果你觉得一次性输入整个 "路径#输入模式#自定义变量#自增变量#输出模式" 太长而且不方便记忆, 可以直接运行程序, 本程序会一步步指引你输入. 如果你想了解更多使用方法, [请点这里](https://gitee.com/meth-nylon/rename/blob/master/TREATMENT.md). ## 如何编译 作者很懒, 项目很简单, 所以不提供makefile和cmake文件, 你只需要编译lib下所有文件和src下的main文件即可, 使用g++的情况下: ```g++ g++ src/main.cpp lib/*.cpp -O2 -o rename ``` 对于windows 10+ x64 用户请在右侧边栏找到"发行版", 下载最新发行版中的exe文件.