Автоматическое переименование файлов в 1С-Битрикс

Внимание! Работает режим премодерации. Все сообщения публикуются после проверки!
Страницы: 1
Ответить
RSS
Автоматическое переименование файлов в 1С-Битрикс
Как автоматизировать переименование файлов в 1С-Битрикс. Разбор кода

В этой статье мы разберем, как с помощью PHP и 1С-Битрикс можно  автоматизировать процесс переименования файлов в системе. Рассмотрим  пример кода, который поможет вам переименовать файлы с пробелами в их  именах, заменив пробелы на подчеркивания, а также обновить  соответствующие данные в базе данных.
Изменено: Валерий Макеев - 29.09.2025 15:18:09
Этот код безопасно находит файлы с пробелами в именах в 1С-Битрикс, отображает их с путями и статусами, и позволяет включить автоматическое переименование с обновлением базы данных — всё это можно проверить в браузере.
Код
<?php
// /local/tools/check_files.php

// Подключаем ядро Битрикс
require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");

use Bitrix\Main\Application;
use Bitrix\Main\FileTable;

// Проверка прав: только для администраторов
if (!CModule::IncludeModule("main") || !$USER->IsAdmin()) {
    die("Доступ запрещён.");
}

// Настройки
$uploadDir = $_SERVER["DOCUMENT_ROOT"] . "/upload/";
$maxFiles = 10;
$processed = 0;
$log = [];

// Получаем файлы с пробелами в имени
$rsFiles = FileTable::getList([
    'filter' => [
        'MODULE_ID' => 'main',
        '%FILE_NAME' => ' '  // Ищем файлы, где имя содержит пробел
    ],
    'select' => ['ID', 'SUBDIR', 'FILE_NAME'],
    'limit' => $maxFiles
]);

echo "<h2>:f09f948d: Поиск файлов с пробелами в имени</h2>";
echo "<table border='1' cellpadding='8' style='border-collapse: collapse; font-family: sans-serif;'>";
echo "<tr style='background: #f0f0f0;'><th>ID</th><th>Старое имя</th><th>Путь</th><th>Новое имя</th><th>Статус</th></tr>";

while ($file = $rsFiles->fetch()) {
    $oldPath = $uploadDir . $file['SUBDIR'] . '/' . $file['FILE_NAME'];
    $newFileName = str_replace(' ', '_', $file['FILE_NAME']);
    $newPath = $uploadDir . $file['SUBDIR'] . '/' . $newFileName;

    $status = [];

    if (!file_exists($oldPath)) {
        $status[] = "❌ Файл не найден на диске";
    } else {
        if (file_exists($newPath)) {
            $status[] = "⚠️ Уже существует: $newFileName";
        } else {
            $status[] = "✅ Готов к переименованию";
        }
    }

    echo "<tr>";
    echo "<td>{$file['ID']}</td>";
    echo "<td><strong>{$file['FILE_NAME']}</strong></td>";
    echo "<td style='font-size: 0.9em; color: #555;'>{$file['SUBDIR']}/{$file['FILE_NAME']}</td>";
    echo "<td><code>{$newFileName}</code></td>";
    echo "<td>" . implode("<br>", $status) . "</td>";
    echo "</tr>";

    $log[] = [
        'id' => $file['ID'],
        'old' => $file['FILE_NAME'],
        'new' => $newFileName,
        'path' => $oldPath,
        'exists' => file_exists($oldPath),
        'conflict' => file_exists($newPath)
    ];
    $processed++;
}

if ($processed === 0) {
    echo "<tr><td colspan='5' style='text-align: center; color: green;'>✅ Нет файлов с пробелами в имени (в пределах лимита)</td></tr>";
}

echo "</table>";

echo "<p><strong>Найдено файлов:</strong> $processed (показаны первые $maxFiles)</p>";

// :f09f9481: Раскомментируйте блок ниже, чтобы включить реальное переименование
/*
echo "<h2>:f09f9484: Выполнение переименования...</h2>";
$connection = Application::getConnection();
$renamed = 0;

foreach ($log as $item) {
    if ($item['exists'] && !$item['conflict']) {
        if (rename($item['path'], dirname($item['path']) . '/' . $item['new'])) {
            $connection->queryExecute("UPDATE b_file SET FILE_NAME = '{$item['new']}' WHERE ID = {$item['id']}");
            echo "✅ {$item['old']} → {$item['new']} (обновлено в БД)<br>";
            $renamed++;
        }
    }
}
echo "<p>✅ Успешно переименовано: $renamed файлов</p>";
*/

require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_after.php");
Страницы: 1
Ответить
Форма ответов
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
 

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Разработка корпоративного сайта

от 7 дней

от 40 000 рублей

Разработка сайта без системы оплаты заказов через корзину

* стоимость зависит от наличия верстки, использования готового решения и т.д.

Техническая поддержка

сайтов на CMS 1C-Битрикс

от 20 000 рублей/месяц
Оптимизация производительности действующих интернет-проектов, наполнение и сопровождение, полная техническая поддержка и продвижение в поисковых сетях.

* стоимость зависит от объема и сложности выполняемых работ

Перенос сайтов на «1С-Битрикс»

сайты на платформе «1С-Битрикс» — это удобство, надежность и высокая посещаемость

от 12 000 рублей
Перенос сайтов с любых CMS и статичных страниц на платформу «1С-Битрикс», с учетом дизайна, верстки и урл-адресов. С сохранением всей информации и структуры сайта.

* зависит от объема выполняемых работ.