久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

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

      本篇文章給大家?guī)砹岁P(guān)于PHP的相關(guān)知識(shí),其中主要跟大家介紹怎么用PHP實(shí)現(xiàn)批量文件重命名腳本,感興趣的朋友下面一起來看一下吧,希望對(duì)大家有幫助。

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

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

      如題。

      【免責(zé)聲明】請(qǐng)了解怎么使用和正則的情況下謹(jǐn)慎使用,由此造成的任何后果均與本程序及其作者無關(guān)~

      【使用說明】

      格式: rename from to path from 是從什么文件名 to 是重命名什么文件名 path 是哪個(gè)文件夾(path 可省略,默認(rèn)為當(dāng)前文件夾)

      【比如】

      rename “(d+)(.*).jpg” “{1}.jpg” {1} 代表正則的第一個(gè)捕獲組,{2},{3} 以此類推

      rename “(d+).jpg” “{i}.jpg” {i} 代表從 1 開始每個(gè)文件增加 1,{i10} 代表從 10 開始每個(gè)文件加 1,{i10+2} 代表從 10 開始加 2,{i10-2} 代表從 10 開始減 2

      【另外】

      –rsort 代表文件名按倒序處理,默認(rèn)為正序 –debug 代表調(diào)試,可以打印出哪個(gè)文件將會(huì)重命名為什么名稱的列表 –help 是顯示幫助文檔

      【其他】

      默認(rèn)重命名后的文件在 path 目錄下的 renamed 目錄里,不會(huì)重命名原文件,請(qǐng)確認(rèn)無誤后仔細(xì)拷貝(如需重命名在源文件上,請(qǐng)加 –force 參數(shù),該參數(shù)請(qǐng)謹(jǐn)慎使用,當(dāng)出現(xiàn)錯(cuò)誤時(shí),文件會(huì)被覆蓋掉且無法恢復(fù),因此非經(jīng)過嚴(yán)格測(cè)試,確保安全情況下不建議使用)

      【代碼如下】

      #!/usr/bin/php <?php //【免責(zé)聲明】請(qǐng)了解怎么使用和正則的情況下謹(jǐn)慎使用,由此造成的任何后果均與本程序及其作者無關(guān) //PHP批量文件重命名腳本(支持正則) // 格式: rename from to path from是從什么文件名 to是重命名什么文件名 path是哪個(gè)文件夾(path可省略,默認(rèn)為當(dāng)前文件夾) // 比如: rename "(d+)(.*).jpg" "{1}.jpg" {1}代表正則的第一個(gè)捕獲組,{2},{3}以此類推 //       rename "(d+).jpg" "{i}.jpg" {i}代表從1開始每個(gè)文件增加1,{i10}代表從10開始每個(gè)文件加1,{i10+2}代表從10開始加2,{i10-2}代表從10開始減2 // 另外: --rsort代表文件名按倒序處理,默認(rèn)為正序 --debug代表調(diào)試,可以打印出哪個(gè)文件將會(huì)重命名為什么名稱的列表 --help是顯示幫助文檔 // 默認(rèn)重命名后的文件在path目錄下的renamed目錄里,不會(huì)重命名原文件,請(qǐng)確認(rèn)無誤后再拷貝(如需重命名在源文件上,請(qǐng)加--force參數(shù),該參數(shù)請(qǐng)謹(jǐn)慎使用,當(dāng)出現(xiàn)錯(cuò)誤時(shí),文件會(huì)被覆蓋掉且無法恢復(fù),因此非經(jīng)過嚴(yán)格測(cè)試,確保安全情況下不建議使用) if(in_array('--help', $argv)) {     //顯示help菜單     help();     exit(); } //開啟調(diào)試模式 $debug = 0; if(in_array('--debug', $argv)) {     unset($argv[array_search("--debug",$argv,true)]);     $debug = 1; } //開啟覆蓋式重命名,默認(rèn)是拷貝式重命名 $forceCover = 0; if(in_array('--force', $argv)) {     unset($argv[array_search("--force",$argv,true)]);     $forceCover = 1;     //讓用戶確認(rèn)是否使用--force參數(shù),防止誤操作     fwrite(STDOUT,'您正在使用--force參數(shù),該參數(shù)可能導(dǎo)致文件被覆蓋且無法恢復(fù),您確認(rèn)使用嗎?yes使用,no不使用:');     $confirm = strtolower(trim(fgets(STDIN)));     if($confirm != 'yes' && $confirm != 'y') {         //不使用         $forceCover = 0;     } } //--rsort把文件按自然排序倒序,默認(rèn)是按自然排序正序 $sortType = 'sort'; if(in_array('--rsort', $argv)) {     unset($argv[array_search("--rsort",$argv,true)]);     $sortType = 'rsort'; } //獲取命令行參數(shù),建議加“”防止字符被shell解析 $argv = array_values($argv); $from = $argv[1]??''; if($from == "*" || $from == "*.*"){     $from = ".*"; } $to = $argv[2]??''; //path默認(rèn)為當(dāng)前目錄 $path = $argv[3]??''; $path = $path ? rtrim($path, '/') . '/' : ''; if(!$from||!$to){     //參數(shù)錯(cuò)誤報(bào)錯(cuò)并顯示幫助     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); //設(shè)置初始值 $init = !empty($toMatches['init']) ? intval($toMatches['init']) : 1; $count = $init ?: 1; //遍歷所有文件名進(jìn)行替換處理 foreach ($files as $filename) {     $tofilename = $to;     //替換$to中{i10+1}字符串     if(!empty($toMatches)) {         $tofilename = str_replace($toMatches[0], $count, $tofilename);     }     //替換每個(gè)文件名的捕獲組(即$from正則中的捕獲組)     preg_match("#{$from}#i", $filename, $fromMatches);     if(!empty($fromMatches)) {         foreach($fromMatches as $key => $val) {             //跳過第一個(gè),第一個(gè)不是捕獲組             if($key > 0) {                 $tofilename = str_replace("{{$key}}", $val, $tofilename);             }         }     }     // 根據(jù)$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;         }     }     //調(diào)試時(shí)只顯示不實(shí)際寫入     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是哪個(gè)文件夾(path可省略,默認(rèn)為當(dāng)前文件夾)n";     echo "列如:rename "(d+)(.*).jpg" "{1}.jpg" {1}代表正則的第一個(gè)捕獲組,{2},{3}以此類推n";     echo "列如:rename "(d+).jpg" "{i}.jpg" {i}代表從1開始每個(gè)文件增加1,{i10}代表從10開始每個(gè)文件加1,{i10+2}代表從10開始加2,{i10-2}代表從10開始減2n";     echo "另外: --rsort代表文件名按倒序處理,默認(rèn)為正序 --debug代表調(diào)試,可以打印出哪個(gè)文件將會(huì)重命名為什么名稱的列表 --help是顯示幫助文檔n";     echo "默認(rèn)重命名后的文件在path目錄下的renamed目錄里,不會(huì)重命名原文件,請(qǐng)確認(rèn)無誤后再拷貝(如需重命名在源文件上,請(qǐng)加--force參數(shù),該參數(shù)請(qǐng)謹(jǐn)慎使用,當(dāng)出現(xiàn)錯(cuò)誤時(shí),文件會(huì)被覆蓋掉且無法恢復(fù),因此非經(jīng)過嚴(yán)格測(cè)試,確保安全情況下不建議使用)n"; }
      登錄后復(fù)制

      推薦學(xué)習(xí):《PHP視頻教程》

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)