|   |   | 
| 
 | Как заставить bat-файл дождаться окончания выгрузки 1С | ☑ | ||
|---|---|---|---|---|
| 0
    
        AlexYurg 06.08.18✎ 17:38 | 
        Есть пакетный файл, содержащий строку вида
 "C:\...\1cv8.exe" DESIGNER /S Сервер\База /N ... /P ... /DumpIB File.DT В этом месте необходимо дождаться, когда закончится выгрузка в File.DT, т.к. дальше там идет загрузка из этого файла в другую базу. На платформе 1С 8.2 (8.2.19.130) это работало без проблем, а на 8.3 (8.3.12.1567) проскакивает на следующую строку батника, т.е. пытается грузить из файла, который еще не сформирован. Вопрос: почему так происходит и как заставить батник дождаться окончания выгрузки? | |||
| 1
    
        SilentMan 06.08.18✎ 17:42 | 
        start /wait ?     | |||
| 2
    
        AlexYurg 06.08.18✎ 17:44 | 
        (1) Сейчас попробую...     | |||
| 3
    
        AlexYurg 06.08.18✎ 17:47 | 
        (1) Ошибка: "Не удается найти DESIGNER ..."
 Я уже прочно забыл эти батники, как там писать start? | |||
| 4
    
        AlexYurg 06.08.18✎ 17:50 | 
        Посмотрел синтаксис START, похоже надо делать несколько батников. Как-то это некрасиво.
 Другие мысли есть у кого-нибудь? | |||
| 5
    
        Локи-13 06.08.18✎ 17:50 | 
        напиши на powershell     | |||
| 6
    
        Локи-13 06.08.18✎ 17:52 | 
        $EXE="C:\Program Files (x86)\1cv8\8.3.10.2699\bin\1cv8.exe"
 $arglist = @("DESIGNER", "/S $SERVERNAME\$IBNAME", "/N $ADMINNAME", "/P $ADMINPASS", "/UpdateDBCfg") & $EXE $arglist | Out-Null | |||
| 7
    
        alkras 06.08.18✎ 17:54 | 
        setlocal enabledelayedexpansion 
 set count=0 set month=1%date:~3,2% set /a month-=100 for %%a in (Январь Февраль Март Апрель Май Июнь Июль ^ Август Сентябрь Октябрь Ноябрь Декабрь) do ( set /a count+=1 if !count! equ %month% (set m=%%a)) md "i:\BaseCopy\%m%\uat\" echo Текущий месяц %m% set v8exe="c:\Program Files (x86)\1cv82\8.2.19.83\bin\1cv8.exe" set AdminUser=/N"UserAdmin" /P"PassAdmin" /WA- set FileInformation=i:\BaseCopy\%m%\error_log.txt date /t >> %FileInformation% time /t >> %FileInformation% rem ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- rem Создание копии UAT set DataBaseName="Server/uat" set DataBase=/S%DataBaseName% set DataBaseName>>%FileInformation% rem Завершение работы пользователей start "" /wait %v8exe% ENTERPRISE %DataBase% %AdminUser% /C"ЗавершитьРаботуПользователей" /UC"ПакетноеОбновлениеКонфигурацииИБ" /Out%FileInformation% -NoTruncate /DisableStartupMessages set filebak="i:\BaseCopy\%m%\uat\%date% %time:~-11,2%-%time:~-8,2%-%time:~-5,2% SQL УАТ.dt" start "" /wait %v8exe% CONFIG %DataBase% %AdminUser% /DumpIB%filebak% /UC"ПакетноеОбновлениеКонфигурацииИБ" /Out%FileInformation% -NoTruncate rem Разрешение работы пользователей start "" /wait %v8exe% ENTERPRISE %DataBase% %AdminUser% /C"РазрешитьРаботуПользователей" /UC"ПакетноеОбновлениеКонфигурацииИБ" /Out%FileInformation% -NoTruncate /DisableStartupMessages | |||
| 8
    
        alkras 06.08.18✎ 17:55 | 
        Раньше пользовался таким скриптом. Все корректно работало с ежедневным сохранением в нужные папки.     | |||
| 9
    
        AlexYurg 06.08.18✎ 17:55 | 
        (6), (7) Круто! Спасибо, попробую!     | |||
| 10
    
        Cthulhu 06.08.18✎ 18:30 | 
        (4): да норм.
 никто же не мешает из твоего батника запилить какие надо ( echo > / echo >> ) потом запустить их потом подтереть за собой... | |||
| 11
    
        Сияющий в темноте 06.08.18✎ 22:42 | 
        И чем VbScript не угодил?
 там даже обьект есть для запуска без окошка и ожидания завершения | |||
| 12
    
        AlexYurg 07.08.18✎ 09:20 | 
        (11) Вся проблема как раз в ожидании завершения.
 Нужно, чтобы было ожидание, и в 8.2 оно было, а в 8.3 пропало. Из-за этого и возник вопрос, как вернуть ожидание завершения. | |||
| 13
    
        spectre1978 07.08.18✎ 09:24 | 
        (12) оно не пропало. Скорее всего проблема в том, что запускается стартер, который запускает другой процесс и выходит. Нужно посмотреть, что происходит при запуске, какие процессы рожаются. И запускать именно конечный, последний процесс, а не то что прописано в ярлыке.     | |||
| 14
    
        AlexYurg 07.08.18✎ 09:33 | 
        (13) Нет, не стартер. Запускается напрямую 1cv8.exe из нужной папки. Такой же процесс появляется в памяти.
 Пробовал запускать 1cv8s.exe - та же беда - не ждет. | |||
| 15
    
        Мыш 07.08.18✎ 09:36 | 
        (14) Асинхронный вызов нельзя сделать?     | |||
| 16
    
        spectre1978 07.08.18✎ 09:38 | 
        Вопросы по бат файлам.
 start /wait /D "C:\Program Files (x86)\1cv8\8.3.11.2867\bin\" 1cv8.exe echo Тру-ля-ля Надпись появляется после того как закрыли 1С | |||
| 17
    
        spectre1978 07.08.18✎ 09:39 | 
        у меня тоже были подобные проблемы, но в конце концов выяснилось что дело было в стартере. В случае с выгрузкой есть еще один вариант с попыткой открытия dt-файла - в приведенном топике я об этом писал. Когда откроется - значит, 1С закончила работу. Я такое на VBS делал.     | |||
| 18
    
        Serg_1960 07.08.18✎ 09:55 | 
        Start "Backup" /Wait "C:\Program Files (x86)\1cv8\common\1cestart.exe"...
 :repeat TimeOut /T 10 tasklist | find "1cv8.exe" if errorlevel 0 GOTO repeat | |||
| 19
    
        mistеr 07.08.18✎ 09:59 | 
        (18) Ничего, что еще кто-то может внезапно запустить 1С для своих целей?     | |||
| 20
    
        mistеr 07.08.18✎ 10:00 | 
        (14) Возьми Process Explorer да посмотри, кто кого запускает.     | |||
| 21
    
        Serg_1960 07.08.18✎ 10:34 | 
        (19) Не принципиально при определенных условиях. Например, когда батник работает ночью, когда пользователей нет и/или некому запустить сеанс на конкретном компе.     | |||
| 22
    
        Мыш 07.08.18✎ 10:55 | 
        И вообще агента Смита запустить можно и на каком-нибудь питоне автоматизировать.     | |||
| 23
    
        AlexYurg 07.08.18✎ 11:33 | 
        Джентльмены, произошло чудо!
 Ожидание вернулось само собой. В результате упражнений с батником обнаружилось, что поведение 1С-ки вернулось к тому, что было в 8.2, т.е. батник сам дожидается окончания выгрузки. Без всяких start /wait и прочих хитростей. Что это было - не понятно. Глюк, одним словом. Всем спасибо за обсуждение и советы! | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |