成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

PHP批量文件重命名腳本(支持正則)

本篇文章給大家帶來了關于PHP的相關知識,其中主要跟大家介紹怎么用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 <?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參數,該參數請謹慎使用,當出現錯誤時,文件會被覆蓋掉且無法恢復,因此非經過嚴格測試,確保安全情況下不建議使用) if(in_array('--help', $argv)) {     //顯示help菜單     help();     exit(); } //開啟調試模式 $debug = 0; if(in_array('--debug', $argv)) {     unset($argv[array_search("--debug",$argv,true)]);     $debug = 1; } //開啟覆蓋式重命名,默認是拷貝式重命名 $forceCover = 0; if(in_array('--force', $argv)) {     unset($argv[array_search("--force",$argv,true)]);     $forceCover = 1;     //讓用戶確認是否使用--force參數,防止誤操作     fwrite(STDOUT,'您正在使用--force參數,該參數可能導致文件被覆蓋且無法恢復,您確認使用嗎?yes使用,no不使用:');     $confirm = strtolower(trim(fgets(STDIN)));     if($confirm != 'yes' && $confirm != 'y') {         //不使用         $forceCover = 0;     } } //--rsort把文件按自然排序倒序,默認是按自然排序正序 $sortType = 'sort'; if(in_array('--rsort', $argv)) {     unset($argv[array_search("--rsort",$argv,true)]);     $sortType = 'rsort'; } //獲取命令行參數,建議加“”防止字符被shell解析 $argv = array_values($argv); $from = $argv[1]??''; if($from == "*" || $from == "*.*"){     $from = ".*"; } $to = $argv[2]??''; //path默認為當前目錄 $path = $argv[3]??''; $path = $path ? rtrim($path, '/') . '/' : ''; if(!$from||!$to){     //參數錯誤報錯并顯示幫助     echo "[error] from and to is required.n";     help();     exit(); } //遍歷所有文件并按自然排序 $files = glob("{$path}*"); if($sortType == 'rsort') {     rsort($files, SORT_NATURAL); } else {     sort($files, SORT_NATURAL); } //匹配$to中{i10+1}字符串 preg_match("#{(?<i>[iI])(?<init>(d+){0,1})(?<op>[+-]{0,1})(?<step>(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 => $tofilenamen";         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開始減2n";     echo "另外: --rsort代表文件名按倒序處理,默認為正序 --debug代表調試,可以打印出哪個文件將會重命名為什么名稱的列表 --help是顯示幫助文檔n";     echo "默認重命名后的文件在path目錄下的renamed目錄里,不會重命名原文件,請確認無誤后再拷貝(如需重命名在源文件上,請加--force參數,該參數請謹慎使用,當出現錯誤時,文件會被覆蓋掉且無法恢復,因此非經過嚴格測試,確保安全情況下不建議使用)n"; }
登錄后復制

推薦學習:《PHP視頻教程》

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
污污内射久久一区二区欧美日韩| 青青草无码精品伊人久久| 老司机精品成人无码AV| 乱中年女人伦AV三区| 欧美xxxxx视频| 肉感妇BBWBBWBBWBBW| 无码一区二区三区AV免费| 亚洲大尺度无码专区尤物| 一本大道东京热无码AV| 97超级碰碰碰久久久久APP| 被两个男人按住吃奶好爽| 夫妇交换聚会群4P疯狂大战视频| 国产微拍精品一区二区| 久久久久久精品免费S| 蜜臀av一区二区蜜臀AV免费| 日本熟妇人妻XXXXX视频| 香蕉久久人人97超碰CAOPR| 亚洲伊人久久大香线蕉综合图片 | 一本一久本久A久久精品综合 | 免费无码成人AV片在线| 日本国产网曝视频在线观看| 小奶瓶(产奶)沈姜| 中国CHAIN同志GAY片国产| 边喂奶边中出的人妻| 国产日产欧产精品| 老熟妇高潮一区二区三区网| 日韩精品无码一区二区三区不卡| 亚洲AV无码AV在线影院| 中文字幕V亚洲日本在线| 粉嫩小泬流出白浆| 久草日B视频一二三区| 欧美精品人妻AⅤ在线观视频免费 欧美精品免费观看二区 | 亚洲一区二区三区偷拍女厕| 班主任掀开裙子让我桶的| 国产情侣露脸高清在线| 麻豆精品一区二区综合AV| 色噜噜狠狠狠狠色综合久| 亚洲国产精品高清久久久| AA丁香综合激情| 国产午夜精品久久精品电影| 妺妺窝人体色WWW聚色窝| 未满十八18禁止免费无码网站| 野花免费观看高清电视| 放荡爆乳女教师电影在线观看| 精品综合久久久久久98| 日韩精品无码AV成人观看| 亚洲人成网7777777国产| 成人国产精品一区二区网站| 九九九影视电影高清全集观看| 日本XXX色视频| 亚洲欧洲自拍拍偷精品网314| 不用播放器的AV| 久久精品岛国AV一区二区无码| 日本工口里番H全彩无遮挡| 亚洲欧洲中文日韩AV乱码| 吃了继兄给我开的药我做的梦| 久久国产精品无码HDAV | 草草影院CCYYCOM| 久久精品国产亚洲色欲蜜壂AV | 成人精品天堂一区二区三区| 久久国产AVJUST麻豆| 四季亚洲Av日韩AV无码中文| 中国XXXX真实偷拍| 国产永久AV福利在线观看| 日本VPSWINDOWS怀孕| 亚洲综合日韩久久成人AV| 国产精品成人3p一区二区三区| 男人一边吃奶一边弄下边好爽| 亚洲AV无码二区一区二十六区| 啊灬啊灬啊灬快好深| 久久久久国产亚洲AV麻豆| 我的娇妻QUEEN| 把人妻日出白浆人妻视频| 久久精品亚洲男人的天堂| 无码 制服 丝袜 国产 另类| A级毛片毛片免费观的看久| 精东传媒VS天美传媒合作| 少妇人妻AV无码专区| 98色精品视频在线| 久久精品AⅤ无码中文字字幕重口 久久精品AⅤ无码中文字字幕蜜桃 | 性XXXXBBBB农村小树林| 成人国产一区二区三区精品不卡 | 精品国产乱码一区二区三区APP | 国产精品免费久久久久软件 | 免费人成视网站在线不卡| 亚洲精品乱码久久久久久不卡| 国产成人午夜在线视频A站 | S货叫大点声C烂你的SB| 久章草在线毛片视频播放| 亚洲VA欧美VA国产VA综合| 国产MV在线天堂MV免费观看| 人妻少妇中文字幕乱码| 中文字幕亚洲综合久久综合| 久久精品高清一区二区三区| 亚洲AV片不卡无码一| 国产成人一区二区青青草原| 强壮公弄得我次次高潮小说| 中文无码日韩欧免费视频APP | 国产黑色丝袜在线视频| 日本一本2017国产| chi老女人老熟女HD| 免费观看羞羞的事情网站| 亚洲精品无码AV专区最新| 国产无人区码卡功能齐全| 天干天干天啪啪夜爽爽AV| 成人影院永久免费观看网址| 欧美精产国品一二三产品工艺| 中文无码精品A∨在线观看不卡| 久久99精品久久久久久9蜜桃| 亚洲成人AV免费| 国内精品久久久久影院优| 无码专区 人妻系列 在线| 国产成人亚洲色成人网站WWW永久四虎| 日本乱妇乱子视频网站-百度| chineSe老女人老熟妇hd| 欧美黑人性暴力猛交喷水| 50岁老熟女一級毛片| 妺妺窝人体色444444大粗| 中文字幕无码日韩专区免费| 免费下载破解看片APP的软件| 在线观看成人无码中文AV天堂| 久久中文字幕人妻丝袜| 伊在人亚洲香蕉精品区| 久久综合亚洲鲁鲁五月天| 一二三四免费观看在线电影二| 久久久久久精品免费看SSS| 亚洲色成人一区二区三区| 久久久久久精品免费免费| 一二三四在线视频观看社区| 久久天天躁狠狠躁夜夜免费观看| 一个添下面两个吃奶| 蜜桃Av噜噜一区二区三区网址| 18级成人毛片免费观看 | 99国产精品久久久久久久成人 | AAAAA级少妇高潮大片免费看| 欧美啪啪抽搐一进一出免费| Xx性欧美肥妇精品久久久久久久久| 人妻丰满熟妇无码AV| 成人欧美日韩一区二区三区| 试看A级看一毛片二十分钟| 国产精品毛片无码| 亚洲AV无码潮喷在线观看| 黑人处破女免费播放| 亚洲色欲综合天堂亚洲| 蜜臀人妻四季AV一区二区不卡| 99久久国产综合精品SWAG| 日本强伦姧人妻完视频正版| 国产VOYEUR精品偷窥222| 亚洲AV无码成H人动漫无遮挡| 久久97精品久久久久久久不卡| 治愈系恋人 电视剧| 欧美又粗又大XXXXBBBB疯狂| 粉嫩av.一区二区三区免费| 无码人妻精品一区二区三区9厂| 国产一区二区三区水蜜桃| 亚洲熟妇AV日韩熟妇AV| 男朋友想吻我腿中间那个部位 | 胯下硕大征服冰山女神| 99久久国语露脸精品国产| 色狠狠AV老熟女| 国精产品一品二品国精日本| 野花影视大全在线观看免费高清 | 久久精品人人看人人爽| 50岁熟妇大白屁股真爽| 日日噜噜夜夜狠狠视频| 国产亚洲欧美日韩亚洲中文色 | 久久永久免费人妻精品我不卡| 97色偷偷色噜噜男人的天堂 | 国产精品涩涩涩视频网站| 亚洲精品四区麻豆文化传媒| 妺妺窝人体色WWW精品| 高清色惰WWW日本午夜色视频| 亚洲AV永久纯肉无码精品动漫| 每个世界都被主角睡来睡去可乐饼| www.av无码| 亚洲AV成人WWW永久无码精品| 狂躁美女BBBBBB视频| 车内挺进尤物少妇紧窄| 亚洲AV毛片一区二区三区| 美女裸体无遮挡免费视频| 丰满少妇人妻HD高清果冻传媒| 亚洲国产成人久久精品软件| 欧美黑人粗暴多交高潮水最多| 国产成人精品一区二区三区免费 | 大象一区一品精区搬运机器| 亚洲国产精品成人AV在线| 男人激烈吮乳吃奶毛片| 国产精品福利自产拍在线观看 | 大乱东京道一本热大交乱| 亚洲国产美女精品久久久久∴| 欧美精品亚洲精品日韩专区VA| 国产精品国产自线拍免费| 中国极品少妇XXXXX1314| 熟妇高潮一区二区麻豆Av渉谷 | 把腿张开老子cao烂你动态图| 亚洲AV成人片色在线观看蜜桃 | 99RE8这里有精品热视频| 午夜性影院爽爽爽爽爽爽| 欧美XXXX做受视频| 国产又粗又猛又黄又爽无遮挡|