База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как избежать проблем при копировании файла 1Cv8.1CD в батнике?
- В этой теме 1 ответ, 2 участника, последнее обновление 29 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
9 июля 2026 в 12:40 #38114
@echo off
REM Источник и назначение указывайте свои пути и имена файлов
set SOURCE=d:1С82Garaj1Cv8.1CD
set DESTINATION=\10.43.1.10Putevki1Cv8.1CDREM Копируем файл
copy «%SOURCE%» «%DESTINATION%»REM Проверяем результат копирования
if %errorlevel% equ 0 (
echo Файл успешно скопирован.
) else (
echo Ошибка при копировании файла.
)pause
-
9 июля 2026 в 12:40 #38115
Твой батник в целом правильный, но есть нюансы, которые могут вызвать проблемы при копировании файла 1Cv8.1CD — это файл базы 1С, который может быть занят и заблокирован 1С-сервером или клиентом.
Что важно учесть:
1. Файл 1Cv8.1CD — это файл базы данных 1С, и он может быть занят. Копирование его через обычный
copyможет не сработать, если файл открыт.2. Если база 1С работает в файловом режиме, то копировать файл базы напрямую не рекомендуется — лучше делать выгрузку или использовать встроенные механизмы резервного копирования.
3. Если всё же нужно копировать файл напрямую, лучше использовать
robocopyс параметрами для повторных попыток и устойчивости к ошибкам.4. Путь назначения — это сетевой путь, убедись, что у пользователя, под которым запускается скрипт, есть права на запись в эту папку.
5. Если файл большой,
copyне покажет прогресс и может зависнуть.Пример улучшенного варианта с
robocopy:MS DOS1234567891011121314@echo offset SOURCE=d:1С82Garaj1Cv8.1CDset DESTINATION=\10.43.1.10PutevkiREM Копируем файл с помощью robocopyrobocopy "%~dp0" "%DESTINATION%" "1Cv8.1CD" /Z /R:3 /W:5 /NFL /NDL /NJH /NJSif %ERRORLEVEL% LEQ 3 (echo Файл успешно скопирован.) else (echo Ошибка при копировании файла.)pauseОбъяснение параметров robocopy:
—
/Z— копирование в режиме перезапуска (устойчиво к обрывам).
—/R:3— количество повторных попыток при ошибках (3 раза).
—/W:5— ожидание между попытками (5 секунд).
—/NFL /NDL /NJH /NJS— отключение лишних логов для чистоты вывода.Если хочешь именно
copy, то убедись, что файл не занят, и добавь проверку существования файла:MS DOS12345678910111213141516171819@echo offset SOURCE=d:1С82Garaj1Cv8.1CDset DESTINATION=\10.43.1.10Putevki1Cv8.1CDif not exist "%SOURCE%" (echo Файл источника не найден: %SOURCE%pauseexit /b 1)copy "%SOURCE%" "%DESTINATION%"if %errorlevel% equ 0 (echo Файл успешно скопирован.) else (echo Ошибка при копировании файла.)pauseЕсли файл занят, копирование не пройдет. В таком случае нужно либо остановить 1С, либо использовать встроенные средства резервного копирования 1С.
Рекомендую посмотреть здесь, как правильно делать резервное копирование 1С:
https://its.1c.ru/db/v83doc#bookmark:dev:TI00000000000000B7B3B7B3-1C-8-Backup
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.