这篇“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批量文件重命名脚本怎么写
转载源于:
http://cdxtjz.com/article/pesses.html