使用PHP指令碼批量重新命名檔名稱
阿新 • • 發佈:2022-03-11
2022年3月11日14:29:50
<?php //php 7.0 function showFiles(string $dir) { $arr = array(); foreach (new RecursiveDirectoryIterator($dir) as $v) { $dd = []; $dd['file_real_path'] = $v->getRealPath(); $dd['file_name'] = $v->getFilename(); $dd['file_path'] = $v->getPath();$arr[] = $dd; } return $arr; } $rr = showFiles('D:/download'); //print_r($rr); //die; foreach ($rr as $k => $v) { $v['file_name'] = mb_convert_encoding($v['file_name'], "UTF-8", "GB2312"); if (mb_strpos($v['file_name'], '》') !== false) { $ss = explode('》', $v['file_name']);$file_name = mb_convert_encoding($ss['1'], "GB2312", "UTF-8"); rename($v['file_real_path'], $v['file_path'] . '/' . $file_name); } else { print_r('fuck' . PHP_EOL); } }
需要注意的幾點:
1,如果你的系統獲取的檔案路徑是GB2312的,在cmd 或者powershell裡是直接可以顯示的,因為這兩個預設也是gbk編碼的一種
2,如果你需要充命名的時候匹配字串,注意需要先把 GB2312轉 UTF-8,在匹配,不然匹配不到
3,處理好檔案 名稱的時候,在吧UTF-8轉回 GB2312在執行 rename 不然容易出現亂碼
4,使用的sql掃描的目錄,很多版本的php應該都可以執行