You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP结合含ID映射的JS文件批量重命名目录内图片文件

实现步骤

  1. 读取img.js文件提取JSON映射结构,转换为PHP数组后做键值反转,得到「旧文件名前缀 => 新文件名前缀」的对应关系
  2. 遍历目标目录下的所有图片文件,匹配映射后执行重命名操作

可直接运行代码

<?php
// 读取img.js内容
$jsContent = file_get_contents('img.js');
// 提取JSON片段
preg_match('/\{[\s\S]*\}/', $jsContent, $matchRes);
if (!$matchRes) {
    die("img.js 中未读取到有效映射数据");
}
// 转换为PHP数组
$originMap = json_decode($matchRes[0], true);
if (json_last_error() !== JSON_ERROR_NONE) {
    die("映射数据解析错误,请检查 img.js 格式是否合法");
}
// 键值反转,适配查找逻辑
$idMap = array_flip($originMap);

// 定义图片目录路径,请根据实际情况修改
$imgPath = "./images/";
// 遍历所有png文件
$imgList = glob($imgPath . "*.png");

foreach ($imgList as $oldFilePath) {
    $oldBaseName = basename($oldFilePath);
    $oldId = pathinfo($oldBaseName, PATHINFO_FILENAME);
    // 匹配到映射则执行重命名
    if (isset($idMap[$oldId])) {
        $newFilePath = $imgPath . $idMap[$oldId] . ".png";
        if (rename($oldFilePath, $newFilePath)) {
            echo "处理成功:{$oldBaseName} → {$idMap[$oldId]}.png" . PHP_EOL;
        } else {
            echo "处理失败:{$oldBaseName} 权限不足或文件被占用" . PHP_EOL;
        }
    } else {
        echo "跳过无匹配文件:{$oldBaseName}" . PHP_EOL;
    }
}
echo "全部任务执行完成";
?>

注意事项

  • 运行脚本前请先备份完整的images目录,避免重命名错误导致文件丢失
  • 请将脚本放在与img.js、images目录同级的位置运行,若路径不同可自行修改代码中$imgPath变量的取值
  • 若图片格式不止png,可修改glob参数的后缀匹配规则,例如改成*.{png,jpg,gif}同时匹配多种格式
  • 数千张文件量级下默认PHP配置即可正常运行,若文件量过大可调整PHP执行超时时间限制

内容的提问来源于stack exchange,提问作者MShack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 10:57:02