1. 程式人生 > 其它 >使用PHP指令碼批量重新命名檔名稱

使用PHP指令碼批量重新命名檔名稱

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應該都可以執行