[Perl]文字/代码批量替换工具

论坛 期权论坛     
niminba   2021-5-22 22:08   23   0
Perl脚本batchReplace.pl可以用来批量替换文件中的文字/代码。可在指定目录中查找指定类型的文件,并递归检查子目录;在输出文件时复制输入文件的目录结构。 <br><br>[附件]Win32应用程序batchReplace.exe是由Perl脚本编译产生的可执行程序,不需安装Perl运行环境即可执行。 <br><br><br>在命令行中使用 <br><br>batchReplace.exe[&nbsp;-i&nbsp;输入文件路径(或包含文件的目录)][&nbsp;-o&nbsp;输出文件位置(文件或目录)][&nbsp;-c&nbsp;批量输入文件的扩展名,以“.”开始,多个扩展名之间以“|”隔开][&nbsp;-m&nbsp;匹配模式][&nbsp;-I(忽略匹配内容的字母大小写)][&nbsp;-G(全局查找要匹配的内容)][&nbsp;-e&nbsp;例外的字符串,是对匹配模式的补充,如果在匹配结果中发现有这样的字符串,做不匹配处理][&nbsp;-r&nbsp;替换的内容] <br><br>上述参数没有顺序限制。当&nbsp;-o&nbsp;参数所涉及的文件路径不存在时,会自动创建。当输出文件已经存在时,文件原有的内容将被覆盖。(安全起见,请不要输出到输入文件的原始位置,以免造成不可恢复的损失。) <br><br>例如: <br>batchReplace.exe&nbsp;-i&nbsp;d:\gaoshu1&nbsp;-o&nbsp;d:\do\123\456&nbsp;-e&nbsp;http://www.blueidea.com/ <br><br><br>通过配置文件&nbsp;batchReplace.set&nbsp;设置参数 <br><br>配置文件中可包含以下设置项目(格式范例,注意大小写): <br><br><br>Input=E:\fna\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定输入路径,相当于命令行参数&nbsp;-i&nbsp;的默认值。 <br>-i=E:\fna\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;同上。 <br>Output=E:\dnaWalks\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定输出路径,相当于命令行参数&nbsp;-o&nbsp;的默认值。 <br>-o=E:\dnaWalks\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;同上。 <br>Match=&lt;iframe[^&gt;]*&gt;[\s\S]*?&lt;\/iframe&gt;&nbsp;&nbsp;匹配模式,相当于命令行参数&nbsp;-m&nbsp;的默认值。 <br>-m=&lt;iframe[^&gt;]*&gt;[\s\S]*?&lt;\/iframe&gt;&nbsp;&nbsp;同上。 <br>Insensitive&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;忽略匹配内容的字母大小写,相当于命令行参数&nbsp;-I。 <br>-I&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;同上。 <br>Global&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;全局查找要匹配的内容,相当于命令行参数&nbsp;-G。 <br>-G&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;同上。 <br>Replacement=&lt;h1&gt;bound0&lt;/h1&gt;&nbsp;&nbsp;&nbsp;替换的内容,相当于命令行参数&nbsp;-r&nbsp;的默认值。 <br>-r=&lt;h1&gt;bound0&lt;/h1&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;同上。 <br>Except=http://www.blueidea.com/&nbsp;例外的字符串,如在匹配结果中发现有这样的字符串,做不匹配处理,相当于命令行参数&nbsp;-e&nbsp;的默认值。 <br>-e=http://www.blueidea.com/&nbsp;&nbsp;&nbsp;同上。 <br>CheckType=.htm|.html&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当输入参数设为目录时,处理目录中包含的具有这些扩展名的文本文件(递归检查子目录)。相当于命令行参数&nbsp;-c&nbsp;的默认值。 <br>-c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;同上。 <br><br>每行放置一个项目。除内容之间不要有多余的空格或引号。&nbsp; <br>除必要的输入输出外,所有的设置项目都是可选的。命令行参数会覆盖相应的默认值。如果在配置文件中不包含Match或CheckType,会启用内置的默认值(同上面示例中给出的值)。Replacement默认为空字符,将匹配内容替换为空字符,也就是将匹配内容清除。 <br><br>欲在batchReplace.set中保留历史配置时,可在参数前放置任意非空白字符以取消其作用。 <br>例如: <br>2007/04/06&nbsp;Insensitive <br>(此处的&nbsp;Insensitive&nbsp;将作为历史配置保留,不再生效。) <br><br>2007/04/06&nbsp;Replacement=&lt;h1&gt;bound0&lt;/h1&gt; <br>(此处的&nbsp;Replacement=&lt;h1&gt;bound0&lt;/h1&gt;&nbsp;将作为历史配置保留,不再生效。) <br><br>如果在配置文件的多行中出现同样的项目,以最后出现的设置为准,例如: <br>CheckType=.htm|.html <br>CheckType=.jsp <br>-c=.asp|.php <br>将设置CheckType的值为.asp|.php,也可以利用这个特性保留历史配置,方便调试。 <br><br><br>这个脚本写得比较仓促(是挤出吃晚饭的时间写的),以后有时间我还会改进。(因此转载请注明出处,并注
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP