这篇“PHP批量文件重命名脚本怎么写”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“PHP批量文件重命名脚本怎么写”文章吧。 PHP批量文件重命名脚本(支持正则)【使用说明】格式: rename from to path from 是从什么文件名 to 是重命名什么文件名 path 是哪个文件夹(path 可省略,默认为当前文件夹)【比如】rename “(d+)(.*).jpg” “{1}.jpg” {1} 代表正则的第一个捕获组,{2},{3} 以此类推rename “(d+).jpg” “{i}.jpg” {i} 代表从 1 开始每个文件增加 1,{i10} 代表从 10 开始每个文件加 1,{i10+2} 代表从 10 开始加 2,{i10-2} 代表从 10 开始减 2【另外】–rsort 代表文件名按倒序处理,默认为正序 –debug 代表调试,可以打印出哪个文件将会重命名为什么名称的列表 –help 是显示帮助文档【其他】默认重命名后的文件在 path 目录下的 renamed 目录里,不会重命名原文件,请确认无误后仔细拷贝(如需重命名在源文件上,请加 –force 参数,该参数请谨慎使用,当出现错误时,文件会被覆盖掉且无法恢复,因此非经过严格测试,确保安全情况下不建议使用)【代码如下】
#!/usr/bin/php [iI])(?(d+){0,1})(? [+-]{0,1})(? (d+){0,1})}#",$to,$toMatches); //设置初始值 $init=!empty($toMatches['init'])?intval($toMatches['init']):1; $count=$init?:1; //遍历所有文件名进行替换处理 foreach($filesas$filename){ $tofilename=$to; //替换$to中{i10+1}字符串 if(!empty($toMatches)){ $tofilename=str_replace($toMatches[0],$count,$tofilename); } //替换每个文件名的捕获组(即$from正则中的捕获组) preg_match("#{$from}#i",$filename,$fromMatches); if(!empty($fromMatches)){ foreach($fromMatchesas$key=>$val){ //跳过第一个,第一个不是捕获组 if($key>0){ $tofilename=str_replace("{{$key}}",$val,$tofilename); } } } //根据$to中{i10+1}字符串判断操作方向 if(!empty($toMatches)){ $step=!empty($toMatches['step'])?intval($toMatches['step']):1; $op=!empty($toMatches['op'])?trim($toMatches['op']):"+"; if($op=="+"){ $count=$count+$step; }else{ $count=$count-$step; } } //调试时只显示不实际写入 if($debug){ $tofilename=$path.$tofilename; echo"$filename=>$tofilenamen"; continue; } //写入重名名后的文件 if($forceCover){ //覆盖式重命名 rename($filename,$path.$tofilename); }else{ //拷贝式重命名 if(!file_exists($path.'renamed/')){ mkdir($path.'renamed/',0777,true); } copy($filename,$path.'renamed/'.$tofilename); } } functionhelp(){ echo"帮助文档:n"; echo"格式:renamefromtopathfrom是从什么文件名to是重命名什么文件名path是哪个文件夹(path可省略,默认为当前文件夹)n"; echo"列如:rename"(d+)(.*).jpg""{1}.jpg"{1}代表正则的第一个捕获组,{2},{3}以此类推n"; echo"列如:r免费云主机域名ename"(d+).jpg""{i}.jpg"{i}代表从1开始每个文件增加1,{i10}代表从10开始每个文件加1,{i10+2}代表从10开始加2,{i10-2}代表从10开始减2n"; echo"另外:--rsort代表文件名按倒序处理,默认为正序--debug代表调试,可以打印出哪个文件将会重命名为什么名称的列表--help是显示帮助文档n"; echo"默认重命名后的文件在path目录下的renamed目录里,不会重命名原文件,请确认无误后再拷贝(如需重命名在源文件上,请加--force参数,该参数请谨慎使用,当出现错误时,文件会被覆盖掉且无法恢复,因此非经过严格测试,确保安全情况下不建议使用)n"; }
以上就是关于“PHP批量文件重命名脚本怎么写”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注百云主机行业资讯频道。
相关推荐: Gitlab-runner+Docker怎么实现自动部署SpringBoot项目
这篇“Gitlab-runner+Docker怎么实现自动部署SpringBoot项目”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Gitlab…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。