PHP批量文件重命名脚本(支持正则)

来源:转载 时间:2023-03-24 16:24:37

本篇文章给大家带来了关于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 ($files as $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($fromMatches as $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 => $tofilename\n";        continue;    }    //写入重名名后的文件    if($forceCover){        //覆盖式重命名        rename($filename, $path.$tofilename);    } else {        //拷贝式重命名        if(!file_exists($path."renamed/")){            mkdir($path."renamed/",0777,true);        }        copy($filename, $path."renamed/".$tofilename);    }}function help() {    echo "帮助文档:\n";    echo "格式:rename from to path from是从什么文件名 to是重命名什么文件名 path是哪个文件夹(path可省略,默认为当前文件夹)\n";    echo "列如:rename \"(\d+)(.*)\.jpg\" \"{1}.jpg\" {1}代表正则的第一个捕获组,{2},{3}以此类推\n";    echo "列如:rename \"(\d+).jpg\" \"{i}.jpg\" {i}代表从1开始每个文件增加1,{i10}代表从10开始每个文件加1,{i10+2}代表从10开始加2,{i10-2}代表从10开始减2\n";    echo "另外: --rsort代表文件名按倒序处理,默认为正序 --debug代表调试,可以打印出哪个文件将会重命名为什么名称的列表 --help是显示帮助文档\n";    echo "默认重命名后的文件在path目录下的renamed目录里,不会重命名原文件,请确认无误后再拷贝(如需重命名在源文件上,请加--force参数,该参数请谨慎使用,当出现错误时,文件会被覆盖掉且无法恢复,因此非经过严格测试,确保安全情况下不建议使用)\n";}
登录后复制

推荐学习:《PHP视频教程》

以上就是PHP批量文件重命名脚本(支持正则)的详细内容,更多请关注php中文网其它相关文章!

上一篇:

下一篇:

X 关闭

PHP批量文件重命名脚本(支持正则)

本篇文章给大家带来了关于PHP的相关知识,其中主要跟大家介绍怎么用PHP实现批量文件重命名脚本,感兴趣的朋友下面一起来看一下吧,希望对大家

2023-03-24

古风女名二字_古风女名

1、寻沙、秦双影、竹息、凉七、素娥、段星河、红枫、乔芷、慕幼卿、曾云沧、卫寒霜、叶婉、洛书遗、许长欢、落檀、凤婠、白柔、

2023-03-24

中海油服3月24日盘中跌幅达5% 今日报

以下是中海油服在北京时间3月24日13:50分盘口异动快照:3月24日,中海油服盘中跌幅达5%,截至13点50分,报14 88元,成交2 62亿元,换手率0 58%

2023-03-24

中国代表在联合国人权理事会回击西方诬蔑

3月22日,中国代表在联合国人权理事会第52届会议一般性辩论中发言,坚决回击西方国家抹黑诬蔑,揭批西方人权劣迹和虚伪面目。中方表示,中国坚

2023-03-24

当前速看:今天42家开发商争抢北京一宗地,中签的是个外来新面孔

3月23日,北京进行了两宗住宅用地的出让,其中位于朱辛庄地铁站左侧的小体量地块引发了42家开发商的激烈竞争,最终被大华集团大连华旅置业有限

2023-03-24

阳光照明:受大环境影响 公司1-2月外贸出口小幅下降_每日时讯

阳光照明在互动平台回复投资者提问称,2023年1-2月,我国照明行业出口整体趋缓,照明产品出口品类中过半数的产品呈现量减价增的态势。据中国海

2023-03-24

高一有几门课程分别是什么 全球短讯

高一的课程有语文、数学、英语、政治、地理、历史、物理、化学、体育、音乐。高一是指高中一年级,是打基础的关键之年。高中(Seniorhighschoo

2023-03-24

当前速读:藤茶和莓茶的区别?

莓茶和藤茶之间无区别,莓茶是用以张家界为核心区域生长的小叶种显齿蛇葡萄植物所制成的,含有天然活性成分黄酮,幼嫩茎叶中总黄酮平均含量超

2023-03-24

男子买小米98英寸电视雷军高调发微博如今“翻车”:3年坏5次最终退货退款

2020年4月9日,杭州市民朱先生通过小米官方商城下单了一台售价19999元的Redmi98英寸巨幕电视,并自费2500余元请来吊车,将电视吊进家中。当时小米

2023-03-24

两会一般开几天_简介两会一般开几天 天天速递

欢迎观看本篇文章,小勉来为大家解答以上问题。两会一般开几天,简介两会一般开几天很多人还不知道,现在让我们一起来看看吧!1

2023-03-24

Copyright   2015-2022 起点科技网版权所有   备案号:皖ICP备2022009963号-12   联系邮箱: 39 60 29 14 2@qq.com