Привет всем есть сервер к которому по РДП подключаются пользователи, непосредственно на самом сервере под Администратором запускается по расписанию Bat. файл, который запускает 1С УТ 10.3 для выполнения регламентных заданий. Но каждый раз по расписанию запускает новый сеанс в итоге получается несколько запущенных копий которые дублируют выполнение регламентов. Как в батнике прописать что если процесс 1c8v.exe запущен то новую копию не запускать.
По теме из базы знаний
- Быстрый экспорт конфигурации из базы "1С:Предприятие 8.1 SQL"
- Пакетный файл backup.bat для автоматического архивирования файловых баз 8.2 с помощью назначенных заданий Windows .
- Backup файловой базы 1с или любых других файлов
- Полная (все базы, все пользователи) очистка кэша 1С одним запуском BAT-файла
- Настройка регламентных заданий с использованием bat-файлов или vbs-скриптов через механизм Task Scheduler Windows
Найденные решения
(22) нужно правильно настроить.
Если использовать батник, то с параметром /wait и без параметра /b.
Запускать нужно не 1cestart.exe, а напрямую нужный 1cv8.exe или 1cv8c.exe
Но и батник вообще не нужен. Можно все в планировщике указать.
Пример вложен. Самое главное добиться, чтоб в "Результат последнего запуска" было "Задание выполняется" или "Экземпляр этой задачи уже выполняется". Последний как раз свидетельствует о том, что новое задание не запустилось, так как предыдущее еще выполняется.
ps. еще преимущество использования планировщика: можно настроить, чтоб по истечении нужного времени задача принудительно завершалась. Тогда запущенная 1С завершится принудительно.
Если использовать батник, то с параметром /wait и без параметра /b.
Запускать нужно не 1cestart.exe, а напрямую нужный 1cv8.exe или 1cv8c.exe
Но и батник вообще не нужен. Можно все в планировщике указать.
Пример вложен. Самое главное добиться, чтоб в "Результат последнего запуска" было "Задание выполняется" или "Экземпляр этой задачи уже выполняется". Последний как раз свидетельствует о том, что новое задание не запустилось, так как предыдущее еще выполняется.
ps. еще преимущество использования планировщика: можно настроить, чтоб по истечении нужного времени задача принудительно завершалась. Тогда запущенная 1С завершится принудительно.
Прикрепленные файлы:
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Как в батнике прописать что если процесс 1c8v.exe запущен то новую копию не запускать.
Ну, если не мудрить с процессами, а делать тупо в лоб, то можно в BAТ перед запуском УТ создавать файл-флажок с определенным именем, по ее завершению - стирать этот файл, а в самом начале BATника проверять наличие этого файла - если присутствует, то ничего не делать.
Можно в bat файле проверить запущен ли процесс 1С, если нет то выполнять запуск.
Google подсказал
Google подсказал
@Echo Off
SetLocal EnableExtensions
Set ProcessName=1cv8.exe
TaskList /FI "ImageName EQ %ProcessName%" | Find /I "%ProcessName%"
If %ErrorLevel% NEQ 0 "Здесь кусок запуска если нет процессора"
(10)
Как-то так:
"file.flg" лучше заменить на полное имя (папка+имя) файла, на запись которого точно есть права, а "C:\Program Files\1C\..." заменить на реальную командную строку запуска УТ
Локально на машине отрабатывает идеально но проблема в том что на сервере он видит процессы других пользователей и не запускает 1с
Так и надо было сразу говорить, что не процессы надо отслеживать, а работу данного BATника.
Как-то так:
@echo off
if exist "file.flg" goto :EOF
echo ! > "file.flg"
if exist "file.flg" start /WAIT "C:\Program Files\1C\..."
if exist "file.flg" del /Q "file.flg"
"file.flg" лучше заменить на полное имя (папка+имя) файла, на запись которого точно есть права, а "C:\Program Files\1C\..." заменить на реальную командную строку запуска УТ
(17)У меня получился такой код. Не отрабатывает просто блымает окно и все закрывается
@echo off
if exist "D:\Базы 1с\ЗапускРегламентов\file.flg" goto :EOF
echo ! > "D:\Базы 1с\ЗапускРегламентов\file.flg"
if exist "D:\Базы 1с\ЗапускРегламентов\file.flg" start /WAIT "C:\Program Files (x86)\1cv8\common\1cestart.exe" enterprise /F "D:\Базы 1с\УТ" /N"Регламенты" /P"1р1""
if exist "D:\Базы 1с\ЗапускРегламентов\file.flg" del /Q "D:\Базы 1с\ЗапускРегламентов\file.flg"
@echo off
if exist "D:\Базы 1с\ЗапускРегламентов\file.flg" goto :EOF
echo ! > "D:\Базы 1с\ЗапускРегламентов\file.flg"
if exist "D:\Базы 1с\ЗапускРегламентов\file.flg" start /WAIT "C:\Program Files (x86)\1cv8\common\1cestart.exe" enterprise /F "D:\Базы 1с\УТ" /N"Регламенты" /P"1р1""
if exist "D:\Базы 1с\ЗапускРегламентов\file.flg" del /Q "D:\Базы 1с\ЗапускРегламентов\file.flg"
(19)
if exist "D:\Базы 1с\ЗапускРегламентов\file.flg" del /Q "D:\Базы 1с\ЗапускРегламентов\file.flg"
if exist "D:\Базы 1с\ЗапускРегламентов\file.flg" goto :End
echo ! > "D:\Базы 1с\ЗапускРегламентов\file.flg"
if exist "D:\Базы 1с\ЗапускРегламентов\file.flg" start /WAIT "C:\Program Files (x86)\1cv8\common\1cestart.exe" enterprise /F "D:\Базы 1с\УТ" /N"Регламенты" /P"1р1""
if exist "D:\Базы 1с\ЗапускРегламентов\file.flg" del /Q "D:\Базы 1с\ЗапускРегламентов\file.flg"
:End
pause
Строчку "@echo off" - убрать! Запустится ли 1С? Если нет - показать скриншот.
Не отрабатывает просто блымает окно и все закрывается
Значит, надо отлаживать. Для начала, вот такой текст:
if exist "D:\Базы 1с\ЗапускРегламентов\file.flg" del /Q "D:\Базы 1с\ЗапускРегламентов\file.flg"
if exist "D:\Базы 1с\ЗапускРегламентов\file.flg" goto :End
echo ! > "D:\Базы 1с\ЗапускРегламентов\file.flg"
if exist "D:\Базы 1с\ЗапускРегламентов\file.flg" start /WAIT "C:\Program Files (x86)\1cv8\common\1cestart.exe" enterprise /F "D:\Базы 1с\УТ" /N"Регламенты" /P"1р1""
if exist "D:\Базы 1с\ЗапускРегламентов\file.flg" del /Q "D:\Базы 1с\ЗапускРегламентов\file.flg"
:End
pause
Строчку "@echo off" - убрать! Запустится ли 1С? Если нет - показать скриншот.
(19)
Наверно, это из-за того, что русские названия папок применяли. Замените все названия на исключительно с латинскими буквами. Вам файл флага совсем необязательно в такие папки помещать. Просто поместите в папку c:\1\
(17)У меня получился такой код. Не отрабатывает просто блымает окно и все закрывается
Наверно, это из-за того, что русские названия папок применяли. Замените все названия на исключительно с латинскими буквами. Вам файл флага совсем необязательно в такие папки помещать. Просто поместите в папку c:\1\
(25)
Тут либо недостаточно прав на запись в эту папку, либо команда вызова 1С некорректная.
Или еще что-то в системе, что удаленно можно и не угадать.
Наверно, это из-за того, что русские названия папок применяли.
Вряд ли: я проверял на длинных именах папок, содержащих кириллицу и пробелы - если такое имя взято в кавычки, то все работает.
Тут либо недостаточно прав на запись в эту папку, либо команда вызова 1С некорректная.
Или еще что-то в системе, что удаленно можно и не угадать.
(26)
При чем тут взятие в кавычки? Кавычки относятся к пробелам в именах.
Кириллица не работает, если bat-файл сохранен в кодировке ANSI, которая как раз по-умолчанию часто предлагается. Надо сохранять в кодировке 866, чтоб работало.
Вряд ли: я проверял на длинных именах папок, содержащих кириллицу и пробелы - если такое имя взято в кавычки, то все работает.
При чем тут взятие в кавычки? Кавычки относятся к пробелам в именах.
Кириллица не работает, если bat-файл сохранен в кодировке ANSI, которая как раз по-умолчанию часто предлагается. Надо сохранять в кодировке 866, чтоб работало.
вот зачем изобретать велосипед?
Все возможности по озвученным требованиям есть в планировщике Windows.
Самое интересное там есть в настройках параметров задачи.
Если задача уже выполняется, то применять правило:
- Не запускать новый экземпляр;
- Ставить новый экземпляр задания в очередь.
и т.д.
А батник все равно нужно чем-то запускать.
Все возможности по озвученным требованиям есть в планировщике Windows.
Самое интересное там есть в настройках параметров задачи.
Если задача уже выполняется, то применять правило:
- Не запускать новый экземпляр;
- Ставить новый экземпляр задания в очередь.
и т.д.
А батник все равно нужно чем-то запускать.
(22) нужно правильно настроить.
Если использовать батник, то с параметром /wait и без параметра /b.
Запускать нужно не 1cestart.exe, а напрямую нужный 1cv8.exe или 1cv8c.exe
Но и батник вообще не нужен. Можно все в планировщике указать.
Пример вложен. Самое главное добиться, чтоб в "Результат последнего запуска" было "Задание выполняется" или "Экземпляр этой задачи уже выполняется". Последний как раз свидетельствует о том, что новое задание не запустилось, так как предыдущее еще выполняется.
ps. еще преимущество использования планировщика: можно настроить, чтоб по истечении нужного времени задача принудительно завершалась. Тогда запущенная 1С завершится принудительно.
Если использовать батник, то с параметром /wait и без параметра /b.
Запускать нужно не 1cestart.exe, а напрямую нужный 1cv8.exe или 1cv8c.exe
Но и батник вообще не нужен. Можно все в планировщике указать.
Пример вложен. Самое главное добиться, чтоб в "Результат последнего запуска" было "Задание выполняется" или "Экземпляр этой задачи уже выполняется". Последний как раз свидетельствует о том, что новое задание не запустилось, так как предыдущее еще выполняется.
ps. еще преимущество использования планировщика: можно настроить, чтоб по истечении нужного времени задача принудительно завершалась. Тогда запущенная 1С завершится принудительно.
Прикрепленные файлы:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот