|
|
本帖最后由 liyun_1981 于 2019-4-15 21:14 编辑
如题,此程序是强迫症患者必备,本人自制且日常使用的小工具,主要功能是通过Java正则表达式查询来处理匹配的文件。。。
使用方法:
1、解压缩game.7z到任意目录,例如:D:\tools;
2、以系统管理员身份运行命令提示符,输入cd /d d:\tools\game\bin,再输入file会显示详细的命令行参数帮助信息。
使用说明:
1、可以使用命令 file >out.txt 将帮助信息保存到文件,所有命令执行结果也均可在最后添加 >out.txt 将输出保存到文件;程序默认也会在 file.exe 所在目录下生成日志文件 file.log
2、以清理最终幻想15的垃圾文件为例,可以使用以下命令:
删除以.eapatchdiff为扩展名的文件
file -d+ "(?i)\.eapatchdiff$" "F:/games/FINAL FANTASY XV"
删除目录名称为 de或fr或ru或us 的目录中所有文件
file -dd+ "^de$|^fr$|^ru$|^us$" "F:/games/FINAL FANTASY XV"
删除以.eapatchdiff为扩展名的文件和删除目录名称为 de或fr或ru或us 的目录中所有文件
file -dd+ "(?i)\.eapatchdiff$|^de$|^fr$|^ru$|^us$" "F:/games/FINAL FANTASY XV"
可以把上面命令选项中的+改成*来模拟执行命令,不会实际删除文件,觉得执行结果满意了再使用以上命令执行实际删除!
file -d* "(?i)\.eapatchdiff$" "F:/games/FINAL FANTASY XV"
file -dd* "^de$|^fr$|^ru$|^us$" "F:/games/FINAL FANTASY XV"
file -dd* "(?i)\.eapatchdiff$|^de$|^fr$|^ru$|^us$" "F:/games/FINAL FANTASY XV"
2018年3月15日下午新增了从已整合4K高清材质版本中查找4K高清材质文件的方法,以避免下了最新的开发版后再重下几十GB高清材质文件。。。可以使用以下命令:
假设最终幻想15整合版本的路径为:F:/games/FINAL FANTASY XV 下载的最新开发版的路径为:F:/迅雷下载/FINAL FANTASY XV
查询获得 F:/games/FINAL FANTASY XV/datas 目录中所有匹配文件和目录及其中所有文件,检查这些文件和目录在 F:/迅雷下载/FINAL FANTASY XV/datas 目录中是否存在,将不存在的文件备份到 F:/备份 目录中。
file -fddf@+::-cd .::* "F:/games/FINAL FANTASY XV/datas::*" "F:/迅雷下载/FINAL FANTASY XV/datas::F:/备份"
查询获得 F:/迅雷下载/FINAL FANTASY XV/datas 目录中所有匹配文件和目录及其中所有文件,检查这些文件和目录在 F:/games/FINAL FANTASY XV/datas 目录中是否存在,将不存在的文件备份到 F:/备份 目录中。
file -fddf@+::-cd .::* "F:/迅雷下载/FINAL FANTASY XV/datas::*" "F:/games/FINAL FANTASY XV/datas::F:/备份"
作者:李允
版本:V4.0
命令参数:
regex 文件名正则查询表达式,.匹配任意文件名和目录名;引号等特殊字符可使用占位符表达式;各命令参数均可使用一对反引号来表示一个引用子字符串,程序会将引用字符串当成无特殊含义的普通字符串对待(即特殊字符占位符表达式和参数分隔符字符串等都将被当成普通字符串对待);引用字符串匹配的正则表达式为:`(.*?)`。
目前支持的所有特殊字符占位符表达式(英文字母不区分大小写)如下:
#BQ=n# 英文反引号(`)占位符表达式,匹配的正则表达式为:(?i)#BQ=?([1-9]?)#;BQ表示反引号,n为个数,=可以不写;基于性能考虑,n的取值范围限定为1~9,表示替换为n个反引号;例如:#BQ#(替换为1个反引号),#BQ1#(替换为1个反引号),#BQ=2#(替换为2个反引号)。
#SQM=n# 英文单引号(')占位符表达式,匹配的正则表达式为:(?i)#SQM=?([1-9]?)#;SQM表示单引号,n为个数,=可以不写;基于性能考虑,n的取值范围限定为1~9,表示替换为n个单引号;例如:#SQM#(替换为1个单引号),#SQM1#(替换为1个单引号),#SQM=2#(替换为2个单引号)。
#DQM=n# 英文双引号(")占位符表达式,匹配的正则表达式为:(?i)#DQM=?([1-9]?)#;DQM表示双引号,n为个数,=可以不写;基于性能考虑,n的取值范围限定为1~9,表示替换为n个双引号;例如:#DQM#(替换为1个双引号),#DQM1#(替换为1个双引号),#DQM=2#(替换为2个双引号)。
src 文件输入目录;可使用特殊字符占位符表达式(见regex参数)。
dest 文件输入输出目录或输入文件路径名;可使用特殊字符占位符表达式(见regex参数)。
backup 文件备份输出目录;可使用特殊字符占位符表达式(见regex参数)。
zipName 压缩文件名(程序会根据命令选项自动添加文件扩展名.zip或.pak);可使用特殊字符占位符表达式(见regex参数)。
zipLevel 文件压缩级别,取值0:不压缩,1~9:1为最低压缩率,9为最高压缩率;不指定则程序智能选择最佳压缩率。
limit 查询类命令(即命令选项以-f开头的命令)的查询结果显示数量限制,即显示前limit条记录;取值范围为:1~2147483647,不指定或指定一个非正整数则取默认值2147483647。
level 文件目录最大查询层数;取值范围为:1~2147483647,不指定则取默认值2147483647层。
sizeExpr 文件大小表达式,匹配的正则表达式为:(0|[1-9]\d*)([TGMKtgmk]?[Bb])?[,;-]?+;取值范围为:0~9223372036854775807B,不指定则取默认值0B;例如:100B(不小于100字节),10KB(不小于10千字节),1-100MB(介于1兆字节到100兆字节之间),500MB;1GB(介于500兆字节到1千兆字节之间),2,1GB(介于2千兆字节到1千兆字节之间),800,800(等于800字节)。
split 二维表格式文件中的列分隔符正则表达式,例如:[,;| \t]+;不指定则取默认值[ \t]+,即只使用空格或制表符作为列分隔符;可使用特殊字符占位符表达式(见regex参数)。
replacement 字符串替换表达式,可作为文件名正则替换表达式(可使用特殊字符占位符表达式(见regex参数));也可作为二维表格式文件中的列字符串替换表达式,格式为:[列号表达式##]规则1(参数列表);;[规则2(参数列表) ... ;;规则n(参数列表)];若不指定列号表达式则对所有列执行指定的规则;规则具备事务性,简单规则仅由1个原子规则组成,复合规则由多个原子规则组成且不能包含原子规则REGENROW;各事务性规则通过;;分隔,复合规则中各原子规则通过=>分隔,各参数通过,,分隔;列号表达式匹配的正则表达式为:([1-9]\d*)(-([1-9]\d*))?,?+;例如:1(取第1列);1,3,5(取1、3、5列);1-3(取1、2、3列);1,4-6(取1、4、5、6列);
目前支持的所有原子规则(英文字母不区分大小写)如下:
LOWER(qstring) 将匹配qstring的列字符串中英文字母替换为小写,匹配的正则表达式为:(?i)(LOWER)(\((.*)\))?;可以不传参数qstring,即LOWER与LOWER(.)等效但更高效;qstring为正则查询表达式,可使用特殊字符占位符表达式(见regex参数);
UPPER(qstring) 将匹配qstring的列字符串中英文字母替换为大写,匹配的正则表达式为:(?i)(UPPER)(\((.*)\))?;可以不传参数qstring,即UPPER与UPPER(.)等效但更高效;qstring为正则查询表达式,可使用特殊字符占位符表达式(见regex参数);
REPLACE(qstring,,rstring) 将匹配qstring的列字符串的子串替换为rstring,匹配的正则表达式为:(?i)(REPLACE)\((.+),,+(.*)\);qstring为正则查询表达式,rstring为正则替换表达式,可使用特殊字符占位符表达式(见regex参数);
REGENROW(rstring) 根据rstring重新生成每一行数据,匹配的正则表达式为:(?i)(REGENROW)\((.+)\);此规则只能作为最后一条原子规则使用,即只能放在规则列表的最后面;rstring为行数据正则替换表达式,可使用特殊字符占位符表达式(见regex参数)和列数据占位符表达式;
目前支持的所有列数据占位符表达式如下:
#n.m# 提取通过执行原子规则获得的列数据,匹配的正则表达式为:#([1-9]\d*)\.(0|[1-9]\d*)#;n为列号,m为原子规则执行顺序号;m的最小值为0,最大值为原子规则执行总数;m取0表示提取第n列的原始数据;例如:#1.0#(提取第1列的原始数据),#1.1#(提取对第1列执行了第1条原子规则后得到的数据);
#n-m1.m2# 提取通过执行复合规则获得的列数据,匹配的正则表达式为:#([1-9]\d*)-([1-9]\d*)\.?([1-9]\d*)?#;n为列号,m1为复合规则执行顺序号,m2为m1中原子规则的执行顺序号;m1的最小值为1,最大值为复合规则执行总数;m2的最小值为1,最大值为m1中原子规则执行总数,m2不指定则取最大值(即#n-m1#与#n-m1.max(m2)#等效);例如:#1-1#(提取对第1列执行了第1条复合规则后得到的数据);#1-1.1#(提取对第1列执行了第1条复合规则中的第1条原子规则后得到的数据)。
命令选项:
~ 可添加在命令选项末尾,表示显示最简明的信息,也不会显示进度条;优先级低于+和*;若未指定且+和*也未指定则默认显示进度条;可与!或@或?连用;例如:-fd~!@?。
+ 可添加在命令选项末尾,表示输出详细信息;优先级高于~和*;可与!或@或?连用;例如:-fd!+@?。
* 可添加在命令选项末尾,表示模拟执行命令,不进行实际操作,仅输出详细信息;优先级低于+但高于~;可与!或@或?连用;例如:-fd*?@!。
! 可添加在命令选项末尾,表示不匹配查询的根目录,可与+或*或@或?连用;例如:file -fd!+ . d:/games 不匹配games目录,只匹配该目录中的任意文件和子目录名称。
@ 可添加在命令选项末尾,表示缓存该命令的查询结果,供后面的命令复用;某些命令不能缓存或复用查询结果,程序将智能忽略掉;复用查询结果的命令将忽略与查询相关的命令参数regex和src;当后面某个命令使用了@时,则重新缓存查询结果;可与!或+或*或?连用;例如:-fd!@*?。
? 可添加在命令选项末尾,表示命令开始执行前启用询问模式(输入n或N跳过,否则继续,按回车键确认:);可与!或+或*或@连用;例如:-fd!+@?。
组合命令:
可以组合多个命令选项和命令参数,一次连续执行多条命令;命令选项与各命令参数的个数必须相等;各命令选项及各命令参数使用::分隔;可使用*复用最近一个明确的命令选项或命令参数,将其当作该命令的前缀使用,例如:-f::*d::*dsa等价于-f::-fd::-fdsa,g:/games::*/1::*/2等价于g:/games::g:/games/1::g:/games/2;单条命令未用到的命令参数使用?占位。
组合命令示例:
file -cd*@::*::* .::*::* g:/games::*::* d:/::e:/::f:/
file -zdd+::-c+@?::* .::\.zip$::* g:/games::g:/file::* g:/file::*/1::*/2 games::?::? 0::?::? ?::1::*
file -zi*::-cd@*::* \.zip$::.::* g:/file::g:/games::* g:/::e:/::f:/ 1::?::?
单条命令:
file -f[+*!@?] regex src [limit] [level]
根据regex查找src中的文件。
file -fd[+*!@?] regex src [limit] [level]
根据regex查找src中的文件和目录及其中所有文件,相对-f增加了目录名匹配,若目录名匹配,则该目录中所有文件和目录都自动被匹配。
file -fdo[+*!@?] regex src [limit] [level]
根据regex查找src中的目录。
file -fs[+*!@?] regex src dest [limit] [level]
根据regex查找src中的文件,且只选取在desc目录的同一相对路径中存在的同名文件。
file -fsmd5[+*!@?] regex src dest [limit] [level]
根据regex查找src中的文件,且只选取在desc目录的同一相对路径中存在且文件内容相同的同名文件。
file -fds[+*!@?] regex src dest [limit] [level]
根据regex查找src中的文件和目录及其中所有文件,相对-f增加了目录名匹配,若目录名匹配,则该目录中所有文件和目录都自动被匹配;且只选取在desc目录的同一相对路径中存在的同名目录和文件。
file -fdos[+*!@?] regex src dest [limit] [level]
根据regex查找src中的目录,且只选取在desc目录的同一相对路径中存在的同名目录。
file -fdf[+*!@?] regex src dest [limit] [level]
根据regex查找src中的文件,且只选取在desc目录的同一相对路径中不存在的文件。
file -fdfmd5[+*!@?] regex src dest [limit] [level]
根据regex查找src中的文件,且只选取在desc目录的同一相对路径中存在且文件内容不同的同名文件。
file -fddf[+*!@?] regex src dest [limit] [level]
根据regex查找src中的文件和目录及其中所有文件,相对-f增加了目录名匹配,若目录名匹配,则该目录中所有文件和目录都自动被匹配;且只选取在desc目录的同一相对路径中不存在的目录和文件。
file -fdodf[+*!@?] regex src dest [limit] [level]
根据regex查找src中的目录,且只选取在desc目录的同一相对路径中不存在的目录。
file -fpa[+*!@?] regex src [limit] [level]
根据regex查找src中的文件(同-f),显示文件的绝对路径名。
file -fpr[+*!@?] regex src [limit] [level]
根据regex查找src中的文件(同-f),显示文件的相对路径名。
file -fpda[+*!@?] regex src [limit] [level]
根据regex查找src中的文件和目录及其中所有文件(同-fd),显示文件或目录的绝对路径名。
file -fpdr[+*!@?] regex src [limit] [level]
根据regex查找src中的文件和目录及其中所有文件(同-fd),显示文件或目录的相对路径名。
file -fpdoa[+*!@?] regex src [limit] [level]
根据regex查找src中的目录(同-fdo),显示目录的绝对路径名。
file -fpdor[+*!@?] regex src [limit] [level]
根据regex查找src中的目录(同-fdo),显示目录的相对路径名。
file -fsa[+*!@?] regex src [sizeExpr] [limit] [level]
根据regex和sizeExpr查找src中的文件,按文件大小递增排序。
file -fsd[+*!@?] regex src [sizeExpr] [limit] [level]
根据regex和sizeExpr查找src中的文件,按文件大小递减排序。
file -fdsa[+*!@?] regex src [sizeExpr] [limit] [level]
根据regex和sizeExpr查找src中的文件和目录,按文件大小递增排序。
file -fdsd[+*!@?] regex src [sizeExpr] [limit] [level]
根据regex和sizeExpr查找src中的文件和目录,按文件大小递减排序。
file -fddsa[+*!@?] regex src [sizeExpr] [limit]
根据regex和sizeExpr查找src中的文件和第一级子目录,按文件和子目录大小递增排序。
file -fddsd[+*!@?] regex src [sizeExpr] [limit]
根据regex和sizeExpr查找src中的文件和第一级子目录,按文件和子目录大小递减排序。
file -fdosa[+*!@?] regex src [sizeExpr] [limit]
根据regex和sizeExpr查找src中的第一级子目录,按子目录大小递增排序。
file -fdosd[+*!@?] regex src [sizeExpr] [limit]
根据regex和sizeExpr查找src中的第一级子目录,按子目录大小递减排序。
file -r[+*!@?] regex src replacement [level]
根据regex和replacement重命名src中的文件。
file -rl[+*!@?] regex src [level]
根据regex将src中所有匹配文件名中英文字母替换为小写;regex可最多指定9个捕获组,最左边为第1个捕获组,程序只会替换捕获组中的子串,如:(.*\.)txt$ 表示只替换文件名,不会替换扩展名txt;.*\.txt$则文件名和扩展名都会被替换;也适用于-ru和-ruf。
file -ru[+*!@?] regex src [level]
根据regex将src中所有匹配文件名中英文字母替换为大写。
file -ruf[+*!@?] regex src [level]
根据regex将src中所有匹配文件名中英文单词首字母替换为大写。
file -rd[+*!@?] regex src replacement [level]
根据regex和replacement重命名src中的文件和目录。
file -rdl[+*!@?] regex src [level]
根据regex将src中所有匹配文件名和目录名中英文字母替换为小写;regex可最多指定9个捕获组,最左边为第1个捕获组,程序只会替换捕获组中的子串,如:(.*\.)txt$ 表示只替换文件名,不会替换扩展名txt;.*\.txt$则文件名和扩展名都会被替换;也适用于-rdu和-rduf。
file -rdu[+*!@?] regex src [level]
根据regex将src中所有匹配文件名和目录名中英文字母替换为大写。
file -rduf[+*!@?] regex src [level]
根据regex将src中所有匹配文件名和目录名中英文单词首字母替换为大写。
file -rdo[+*!@?] regex src replacement [level]
根据regex和replacement重命名src中的目录。
file -rdol[+*!@?] regex src [level]
根据regex将src中所有匹配的目录名中英文字母替换为小写。
file -rdou[+*!@?] regex src [level]
根据regex将src中所有匹配的目录名中英文字母替换为大写。
file -rdouf[+*!@?] regex src [level]
根据regex将src中所有匹配的目录名中英文单词首字母替换为大写。
file -rfbt[+*!@?] regex src replacement [split] [level]
根据regex和replacement替换src中所有匹配的二维表格式文件中所有匹配的列。
file -rfil[+*!@?] regex src [dest] [level]
根据配置文件dest自动替换src中所有文件名匹配regex的文件内容;若不指定dest,则根据配置文件./file-il.xml自动替换src中所有文件名匹配regex的文件内容,若配置文件./file-il.xml不存在,则会自动生成一个与该文件同名且同格式的模版文件。
file -rfgbk[+*!@?] regex src dest [level]
根据regex提取src目录中所有匹配文件中的简体中文字符串,并将去重复字符后的简体中文字符串以UTF_16LE编码格式保存到文件dest;若无匹配文件或所有匹配文件中都不存在简体中文字符串,则将简体中文字符串的全集保存到文件dest。
file -rfbig5[+*!@?] regex src dest [level]
根据regex提取src目录中所有匹配文件中的繁体中文字符串,并将去重复字符后的繁体中文字符串以UTF_16LE编码格式保存到文件dest;若无匹配文件或所有匹配文件中都不存在繁体中文字符串,则将繁体中文字符串的全集保存到文件dest。
file -c[+*!@?] regex src dest [level]
根据regex复制src中文件到dest中。
file -cd[+*!@?] regex src dest [level]
根据regex复制src中所有匹配文件和目录及其中所有文件到dest中。
file -cdo[+*!@?] regex src dest [level]
根据regex复制src中所有匹配的目录及其中所有文件到dest中。
file -d[+*!@?] regex src [level]
根据regex删除src中所有匹配文件。
file -dd[+*!@?] regex src [level]
根据regex删除src中所有匹配文件和目录及其中所有文件。
file -ddo[+*!@?] regex src [level]
根据regex删除src中所有匹配的目录及其中所有文件。
file -dn[+*!@?] regex src [level]
根据regex删除src中所有匹配的空文件。
file -ddn[+*!@?] regex src [level]
根据regex删除src中所有匹配的空文件和空目录。
file -ddon[+*!@?] regex src [level]
根据regex删除src中所有匹配的空目录。
file -m[+*!@?] regex src dest [level]
根据regex移动src中文件到dest中。
file -md[+*!@?] regex src dest [level]
根据regex移动src中所有匹配文件和目录及其中所有文件到dest中。
file -mdo[+*!@?] regex src dest [level]
根据regex移动src中所有匹配的目录及其中所有文件到dest中。
file -iu[+*!@?] regex src dest backup [level]
根据regex获得src中所有匹配文件,检查这些文件在dest中是否能找到文件名称是以该文件名称为前缀的文件,若存在则先将dest中匹配的文件移动到backup中,再将该文件移动到dest中。
file -ir[+*!@?] regex src dest backup [level]
根据regex获得src中所有匹配文件,检查这些文件在dest中是否能找到文件名称是该文件名称的前缀的文件,若存在则先将dest中匹配的文件移动到backup中,再将该文件移动到dest中。
file -u[+*!@?] regex src dest backup [level]
根据regex将src中所有匹配文件更新到dest中,更新时会先检查dest中是否已存在该文件,若存在则先将该文件备份到backup中,再更新之。
file -ud[+*!@?] regex src dest backup [level]
根据regex将src中所有匹配文件和目录及其中所有文件更新到dest中,更新时会先检查dest中是否已存在该文件,若存在则先将该文件备份到backup中,再更新之。
file -zd[+*!@?] regex src dest zipName [zipLevel] [level]
根据regex将src中所有匹配文件压缩到dest/zipName.zip文件中。
file -zdd[+*!@?] regex src dest zipName [zipLevel] [level]
根据regex将src中所有匹配文件和目录及其中所有文件压缩到dest/zipName.zip文件中。
file -zi[+*!@?] regex src dest [level]
根据regex将src中所有匹配文件解压缩到dest中。
file -pd[+*!@?] regex src dest zipName [zipLevel] [level]
根据regex将src中所有匹配文件打包到dest/zipName.pak文件中。
file -pdd[+*!@?] regex src dest zipName [zipLevel] [level]
根据regex将src中所有匹配文件和目录及其中所有文件打包到dest/zipName.pak文件中。
file -pi[+*!@?] regex src [level]
根据regex将src中所有匹配文件解包到该文件所在目录中。
file -gl32[+*!@?] regex src [level]
根据regex查找src中的文件(同-f),显示文件对应的36位GUID(英文字母全小写)。
file -gu32[+*!@?] regex src [level]
根据regex查找src中的文件(同-f),显示文件对应的36位GUID(英文字母全大写)。
file -ml16[+*!@?] regex src [level]
根据regex查找src中的文件(同-f),显示文件对应的16位MD5(英文字母全小写)。
file -mu16[+*!@?] regex src [level]
根据regex查找src中的文件(同-f),显示文件对应的16位MD5(英文字母全大写)。
file -ml32[+*!@?] regex src [level]
根据regex查找src中的文件(同-f),显示文件对应的32位MD5(英文字母全小写)。
file -mu32[+*!@?] regex src [level]
根据regex查找src中的文件(同-f),显示文件对应的32位MD5(英文字母全大写)。
file -je[+*!@?] regex src [level]
根据regex查找src中的文件(同-f),编码(即压缩为一行)JSON格式文件。
file -jd[+*!@?] regex src [level]
根据regex查找src中的文件(同-f),解码(即格式化)JSON格式文件。
此程序请到我这个帖子下载:http://bbs.3dmgame.com/thread-5745545-1-1.html
|
评分
-
2
查看全部评分
-
|