|
Батник по запуску нескольких баз 1С 8 | ☑ | ||
---|---|---|---|---|
0
Vovka-x13
10.03.15
✎
09:50
|
Нужно по расписанию запускать 1С несколько баз. В батниках плохо разбираюсь, написал следующее:
@echo off echo Это начало запуска "C:\Program Files\1cv8\8.3.5.1248\bin\1cv8.exe" CONFIG /S"192,,,,,\Y_SQL" "C:\Program Files\1cv8\8.3.5.1248\bin\1cv8.exe" CONFIG /S"192,,,,,\Y123_SQL" echo Это конец exit Почти работает, но запускает только первая база, если закрыть её начинает запускаться следующая(выполняться след. команда). И после того как запустилась вторая и её закрыть выходит сообщение "Это конец". Что делаю не так? Странно как то работает ожидал, что все команды будут выполняться без каких либо моих телодвижений. |
|||
1
mikecool
10.03.15
✎
10:05
|
используй несколько батников
|
|||
2
Vovka-x13
10.03.15
✎
10:05
|
Согласен))), но почему так не работает?
|
|||
3
MiniMuk
10.03.15
✎
10:06
|
попробуй
call "C:\Program Files.. |
|||
4
mikecool
10.03.15
✎
10:06
|
(2) с чего решил, что должны выполняться все строки параллельно?
|
|||
5
D_E_S_131
10.03.15
✎
10:08
|
(4) Наверное потому, что Windows многозадачная система. xD
|
|||
6
Vladal
10.03.15
✎
10:10
|
(0) Используй команду Start
@echo off echo Это начало запуска start "C:\Program Files\1cv8\8.3.5.1248\bin\1cv8.exe" CONFIG /S"192,,,,,\Y_SQL" start "C:\Program Files\1cv8\8.3.5.1248\bin\1cv8.exe" CONFIG /S"192,,,,,\Y123_SQL" echo Это конец exit Если надо вызвать другой батник из батника, используй call call othet.bat call other.cmd (4) С того, что батник запускает виндовые программы, которые выполняются в отдельном потоке. Это потому, что интерпретатор DOS однопотоковый. А товарищ в батнике 1С запускает в этом потоке и батник ждет завершение выполнения команды. |
|||
7
Vovka-x13
10.03.15
✎
10:10
|
(4) я не сказал параллельно, последовательно.
|
|||
8
Vladal
10.03.15
✎
10:12
|
А если бы запускать какую другую программу и ждать пока она завершится и после запускать следующую, то так:
start wait program1.exe start wait program2.exe |
|||
9
Vovka-x13
10.03.15
✎
10:39
|
Вот этот вариант работает
@echo off start "" "C:\Program Files\1cv82\8.2.19.83\bin\1cv8.exe" CONFIG /S"192,,,,\Y" start "" "C:\Program Files\1cv8\8.3.5.1248\bin\1cv8.exe" CONFIG /S"192,,,,,\Y123" Exit |
|||
10
Fedor-1971
10.03.15
✎
10:58
|
(9) собственно и первый вариант будет работать, если при старте 1С ты проверишь некоторое условие и организуешь её закрытие.
Схема примерно такая: ПриНачалеРаботыСистемы - проверяем ключ командной строки запуска, выполняем какую-то обработку, завершаем работу 1С. Если тебе просто надо запустить оговоренные тобой 1С, а закрывать их будет пользователь, то: start nowait ... |
|||
11
Fedor-1971
10.03.15
✎
11:01
|
10+ Сорри, ошибся noWait нету в параметрах start.
запусти cmd и введи start /?. Там ещё много какие параметры есть |
|||
12
Vovka-x13
10.03.15
✎
11:26
|
Еще вопрос возник по батникам:
@echo off setlocal ENABLEDELAYEDEXPANSION Set Process=1cv8.exe tasklist | Find /i "%Process%.exe" || (goto Else) :THEN Exit Goto end :ELSE start "" "C:\Program Files\1cv82\8.2.19.83\bin\1cv8.exe" CONFIG /S"192,,,,\Y" start "" "C:\Program Files\1cv8\8.3.5.1248\bin\1cv8.exe" CONFIG /S"192,,,,,\Y123" monitor off Exit Исходя из логики этого кода ищется процесс "1cv8.exe" если его нет, то запускается. Но можно ли сделать поиск процесса не по имени, а по значению колонки которая именуется в диспетчере задач "Command line" т.к. процесс "1cv8.exe" может быть уже запущен, но мне нужно запустить именно эти команды для запуска 1с-ки. |
|||
13
ДенисЧ
10.03.15
✎
11:31
|
(12) tasklist не показывает командную строку процесса.
Ищи стороннюю приблуду |
|||
14
Vovka-x13
10.03.15
✎
11:36
|
Попробовал по названию окон, если название окна латинскими то работает, если русскими то нет. Как нибудь это побороть можно?
tasklist /FI "WINDOWTITLE eq Конфигуратор*" |
|||
15
Fedor-1971
10.03.15
✎
11:41
|
(12)
Set Process=1cv8.exe tasklist | Find /i "%Process%.exe" || (goto Else) Ничего не найдёшь убери в одном месте .ехе (14) Попробуй залить результат работы TaskList в файл и посмотри кодировку, перед поиском по оному |
|||
16
Vovka-x13
10.03.15
✎
11:49
|
(15) не совсем понял последнее предложение.
|
|||
17
Fedor-1971
10.03.15
✎
12:01
|
(16)
Не конвейер: tasklist | Find /i "%Process%.exe" || (goto Else) А примерно так: TaskList >d:\11.txt Find /i "%Process%.exe" d:\11.txt |
|||
18
Fedor-1971
10.03.15
✎
12:03
|
17+ кодировку d:\11.txt проверь, Find по умолчанию использует вроде 866, потому и русские буквы не находятся.
|
|||
19
Vovka-x13
10.03.15
✎
12:12
|
Сделал так
TaskList /v >d:\11.txt Find /i "Название окна по русски" d:\11.txt Вроде работает |
|||
20
Fedor-1971
10.03.15
✎
12:14
|
вот и хорошо
|
|||
21
Vladal
10.03.15
✎
12:34
|
А если бы запускать какую другую программу и ждать пока она завершится и после запускать следующую, то так:
start wait program1.exe start wait program2.exe (12) Это уже к vbs, коммандный процессор вроде такое не имеет. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |