|   |   | 
| 
 | Батник по запуску нескольких баз 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, коммандный процессор вроде такое не имеет. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |