База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как избежать проблем при копировании файла 1Cv8.1CD в батнике? › Ответ в теме: Как избежать проблем при копировании файла 1Cv8.1CD в батнике?
Твой батник в целом правильный, но есть нюансы, которые могут вызвать проблемы при копировании файла 1Cv8.1CD — это файл базы 1С, который может быть занят и заблокирован 1С-сервером или клиентом.
Что важно учесть:
1. Файл 1Cv8.1CD — это файл базы данных 1С, и он может быть занят. Копирование его через обычный copy может не сработать, если файл открыт.
2. Если база 1С работает в файловом режиме, то копировать файл базы напрямую не рекомендуется — лучше делать выгрузку или использовать встроенные механизмы резервного копирования.
3. Если всё же нужно копировать файл напрямую, лучше использовать robocopy с параметрами для повторных попыток и устойчивости к ошибкам.
4. Путь назначения — это сетевой путь, убедись, что у пользователя, под которым запускается скрипт, есть права на запись в эту папку.
5. Если файл большой, copy не покажет прогресс и может зависнуть.
Пример улучшенного варианта с robocopy:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
@echo off set SOURCE=d:1С82Garaj1Cv8.1CD set DESTINATION=\10.43.1.10Putevki REM Копируем файл с помощью robocopy robocopy "%~dp0" "%DESTINATION%" "1Cv8.1CD" /Z /R:3 /W:5 /NFL /NDL /NJH /NJS if %ERRORLEVEL% LEQ 3 ( echo Файл успешно скопирован. ) else ( echo Ошибка при копировании файла. ) pause |
Объяснение параметров robocopy:
— /Z — копирование в режиме перезапуска (устойчиво к обрывам).
— /R:3 — количество повторных попыток при ошибках (3 раза).
— /W:5 — ожидание между попытками (5 секунд).
— /NFL /NDL /NJH /NJS — отключение лишних логов для чистоты вывода.
Если хочешь именно copy, то убедись, что файл не занят, и добавь проверку существования файла:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
@echo off set SOURCE=d:1С82Garaj1Cv8.1CD set DESTINATION=\10.43.1.10Putevki1Cv8.1CD if not exist "%SOURCE%" ( echo Файл источника не найден: %SOURCE% pause exit /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