Написание bat

1. Xellsing 33 27.11.17 12:54 Сейчас в теме
Привет всем есть сервер к которому по РДП подключаются пользователи, непосредственно на самом сервере под Администратором запускается по расписанию Bat. файл, который запускает 1С УТ 10.3 для выполнения регламентных заданий. Но каждый раз по расписанию запускает новый сеанс в итоге получается несколько запущенных копий которые дублируют выполнение регламентов. Как в батнике прописать что если процесс 1c8v.exe запущен то новую копию не запускать.
По теме из базы знаний
Найденные решения
23. spacecraft 27.11.17 19:05 Сейчас в теме
(22) нужно правильно настроить.
Если использовать батник, то с параметром /wait и без параметра /b.
Запускать нужно не 1cestart.exe, а напрямую нужный 1cv8.exe или 1cv8c.exe
Но и батник вообще не нужен. Можно все в планировщике указать.
Пример вложен. Самое главное добиться, чтоб в "Результат последнего запуска" было "Задание выполняется" или "Экземпляр этой задачи уже выполняется". Последний как раз свидетельствует о том, что новое задание не запустилось, так как предыдущее еще выполняется.

ps. еще преимущество использования планировщика: можно настроить, чтоб по истечении нужного времени задача принудительно завершалась. Тогда запущенная 1С завершится принудительно.
Прикрепленные файлы:
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. user856012 13 27.11.17 13:00 Сейчас в теме
(1)
Как в батнике прописать что если процесс 1c8v.exe запущен то новую копию не запускать.
Ну, если не мудрить с процессами, а делать тупо в лоб, то можно в BAТ перед запуском УТ создавать файл-флажок с определенным именем, по ее завершению - стирать этот файл, а в самом начале BATника проверять наличие этого файла - если присутствует, то ничего не делать.
sssss_aaaaa_2011; +1 Ответить
4. Xellsing 33 27.11.17 13:14 Сейчас в теме
(2) Можете скинуть пример а то с bat. файлами не сильно дружу
9. tolyan_ekb 104 27.11.17 13:24 Сейчас в теме
(1) Может удалять сеанс переда запускам батника?
11. protexprotex 113 27.11.17 13:41 Сейчас в теме
(1) А не проще просто в 1С-ке при запуске проверять - запущен ли уже сеанс под пользователем с этим именем, и если да, то делать отказ на запуск?
12. Xellsing 33 27.11.17 13:50 Сейчас в теме
(11)Как вариант да, но есть вероятность что сеанс может быть зависшим
18. protexprotex 113 27.11.17 14:15 Сейчас в теме
(12) Ну, тогда в любом случае (даже с bat-ником) Вы не узнаете зависший сеанс или нет. Хотя, в таком случае можно принудительно из 1С-ки завершать другой (уже существующий) сеанс с таким же пользователем и запускать новый.
3. D_e_X_T_e_R 572 27.11.17 13:03 Сейчас в теме
А не проще планировщиком стандартным воспользоваться, например сделать заданий открывать и сделать по расписанию закрытие программы.
5. Xellsing 33 27.11.17 13:15 Сейчас в теме
(3) Планировщиком не сильно получиться так как не понятно какое время будут отрабатывать регламенты
6. D_e_X_T_e_R 572 27.11.17 13:18 Сейчас в теме
(5)Ну поставить хотя бы на закрытие, скажем в 23:00 каждого дня.
7. comptr 30 27.11.17 13:19 Сейчас в теме
(3) а если регламентное задание ещё не завершилось, и мы его принудительно прибьём?
Тогда уж попробовать в настройках детального расписания указать, когда его завершать ("Завершать через").
8. Абушев 135 27.11.17 13:24 Сейчас в теме
Можно в bat файле проверить запущен ли процесс 1С, если нет то выполнять запуск.
Google подсказал
@Echo Off
SetLocal EnableExtensions

Set ProcessName=1cv8.exe
TaskList /FI "ImageName EQ %ProcessName%" | Find /I "%ProcessName%"
If %ErrorLevel% NEQ 0 "Здесь кусок запуска если нет процессора"
10. Xellsing 33 27.11.17 13:38 Сейчас в теме
(8) Локально на машине отрабатывает идеально но проблема в том что на сервере он видит процессы других пользователей и не запускает 1с
13. user856012 13 27.11.17 13:54 Сейчас в теме
(10)
Локально на машине отрабатывает идеально но проблема в том что на сервере он видит процессы других пользователей и не запускает 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\..." заменить на реальную командную строку запуска УТ
16. Xellsing 33 27.11.17 14:12 Сейчас в теме
(13)
@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"


Везде менять или только в последней строке?
17. user856012 13 27.11.17 14:13 Сейчас в теме
(16)
Везде менять или только в последней строке?
Вам надо чтобы только последняя строка работала? ;)
19. Xellsing 33 27.11.17 16:27 Сейчас в теме
(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"
24. user856012 13 27.11.17 19:28 Сейчас в теме
(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С? Если нет - показать скриншот.
25. pavel06 2 27.11.17 23:20 Сейчас в теме
(19)
(17)У меня получился такой код. Не отрабатывает просто блымает окно и все закрывается


Наверно, это из-за того, что русские названия папок применяли. Замените все названия на исключительно с латинскими буквами. Вам файл флага совсем необязательно в такие папки помещать. Просто поместите в папку c:\1\
26. user856012 13 28.11.17 01:13 Сейчас в теме
(25)
Наверно, это из-за того, что русские названия папок применяли.
Вряд ли: я проверял на длинных именах папок, содержащих кириллицу и пробелы - если такое имя взято в кавычки, то все работает.

Тут либо недостаточно прав на запись в эту папку, либо команда вызова 1С некорректная.

Или еще что-то в системе, что удаленно можно и не угадать.
27. pavel06 2 28.11.17 10:51 Сейчас в теме
(26)
Вряд ли: я проверял на длинных именах папок, содержащих кириллицу и пробелы - если такое имя взято в кавычки, то все работает.



При чем тут взятие в кавычки? Кавычки относятся к пробелам в именах.
Кириллица не работает, если bat-файл сохранен в кодировке ANSI, которая как раз по-умолчанию часто предлагается. Надо сохранять в кодировке 866, чтоб работало.
user856012; +1 Ответить
28. user856012 13 28.11.17 11:02 Сейчас в теме
(27)
Надо сохранять в кодировке 866, чтоб работало
Ну да, вы правы, просто для меня это само собой разумеется, а как для автора - не знаю.

Вполне возможно, что тут-то собака и порылась, скриншот без "@echo off" это бы показал.
15. Xellsing 33 27.11.17 14:03 Сейчас в теме
(8)Если можно как-то ограничить чтоб проверялись только процессы определенного пользователя было бы вообще супер.
14. Vitaly1C8 27.11.17 13:55 Сейчас в теме
В 1С создать Справочник; Туда записывать статус задания;
При запуске из батника проверять, - если статус задания "Уже выполняется" ничего не делаем выходим.
20. spacecraft 27.11.17 16:39 Сейчас в теме
вот зачем изобретать велосипед?
Все возможности по озвученным требованиям есть в планировщике Windows.
Самое интересное там есть в настройках параметров задачи.
Если задача уже выполняется, то применять правило:
- Не запускать новый экземпляр;
- Ставить новый экземпляр задания в очередь.
и т.д.

А батник все равно нужно чем-то запускать.
22. Xellsing 33 27.11.17 18:08 Сейчас в теме
(20) Эта галка не отрабатывает она стоит но все равно запускает батник каждый раз по расписанию
23. spacecraft 27.11.17 19:05 Сейчас в теме
(22) нужно правильно настроить.
Если использовать батник, то с параметром /wait и без параметра /b.
Запускать нужно не 1cestart.exe, а напрямую нужный 1cv8.exe или 1cv8c.exe
Но и батник вообще не нужен. Можно все в планировщике указать.
Пример вложен. Самое главное добиться, чтоб в "Результат последнего запуска" было "Задание выполняется" или "Экземпляр этой задачи уже выполняется". Последний как раз свидетельствует о том, что новое задание не запустилось, так как предыдущее еще выполняется.

ps. еще преимущество использования планировщика: можно настроить, чтоб по истечении нужного времени задача принудительно завершалась. Тогда запущенная 1С завершится принудительно.
Прикрепленные файлы:
21. exitone 27.11.17 16:45 Сейчас в теме
наши админы юзали XStarter...
ALEXEY_KONONETS; +1 Ответить
29. ALEXEY_KONONETS 25.10.22 16:24 Сейчас в теме
(21) Век живи, век учись. Программа для таких нужд просто великолепная. Планировщик заданий отдыхает. А с её функционалом можно ещё кучу рутины автоматизировать и сократить время у компа на несколько процентов.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)