windows使用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,使用的spl扫描目录,很多版本的php应该都可以执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值