|
Командная строка, последовательное выполнение команд | ☑ | ||
---|---|---|---|---|
0
tesei
14.12.14
✎
16:58
|
есть два батника, один выгружает базу, другой передает на фтп. Оба успешно запускаются порознь. Требуется запустить команды последовательно в одном батнике, пока не выходит - фтп стартует раньше, чем заказчивается архивирование. Пробовал start "" /wait - не помогает. Команды:
start "" /wait "C:\Program Files (x86)\%platform%\bin\1cv8s.exe" CONFIG /F %database% /DumpIB %file_name%.dt /OUT "backup.log" -NoTruncate start "" /wait ftp -v -n -s:%file_transport% |
|||
1
Рэйв
14.12.14
✎
16:59
|
Как вариант - заверни выполнение батников последовательно в один батник:-)
|
|||
2
Рэйв
14.12.14
✎
17:02
|
вернее вызов этих батников, если ты понял
|
|||
3
tesei
14.12.14
✎
17:11
|
(2) запускаются одновременно все равно
|
|||
4
Garykom
гуру
14.12.14
✎
17:11
|
(0) условие для второго сделай на появление файла, пусть в цикле с паузой крутится и ждет пока не будет готов бэкап
|
|||
5
spectre1978
14.12.14
✎
17:39
|
(4) да, примерно так, только я делал не проверку на появление файла, а пытался открыть его на запись. Если происходит ошибка доступа, то ждем 20 секунд и опять пытаемся открыть. Когда открылся - выходим из цикла, закрываем файл и делаем выгрузку на FTP.
Правда, я не знаю, подойдет ли для этого BAT. Я на VBS делал. |
|||
6
spectre1978
14.12.14
✎
17:42
|
что касаемо /wait, то я так понимаю, это только для консольных приложений работает. Для GUI приложений возможен только вариант (4)-(5).
|
|||
7
spectre1978
14.12.14
✎
17:46
|
условие на появление файла не работает, потому как файл-то появляется почти сразу, но записываться он может очень долго. У меня - минут 30-40.
|
|||
8
Chameleon1980
14.12.14
✎
17:48
|
а call не?
|
|||
9
spectre1978
14.12.14
✎
17:51
|
(8) я не знаю. Там проблема в том что приложение стартует, создает файл, батник в это время может продолжать выполнять любые команды по списку, но файл архива нельзя использовать неопределенно долгое время, пока он не будет полностью записан. Как тут колл поможет?
|
|||
10
Chameleon1980
14.12.14
✎
17:52
|
просто припоминается с доса еще - что-то типа того, что CAll пока не выполнится далее батник не выполняется
|
|||
11
Chameleon1980
14.12.14
✎
17:53
|
описание help call длинное, но вот кусок:
Для выхода из такого пакетного файла необходимо дважды достичь его конца. Первый выход возвращает управление на инструкцию, расположенную сразу после строки CALL, а второй выход завершает выполнение пакетного файла. |
|||
12
spectre1978
14.12.14
✎
17:54
|
(10) дос однозадачная среда, там приложения за исключением резидентов выполнялись одно за другим. Виндовые ГУИ приложения выполняются параллельно и их одновременно может быть в памяти сколько хочешь. Батник не дожидается кода завершения от них. Запускает и продолжает дальше выполнять команды.
|
|||
13
Chameleon1980
14.12.14
✎
17:56
|
можно в одном сделать, но чтобы быстро:
первый батник call второй батник.bat call третий батник.bat второй батник - формируем файл третий - отправляем какая разница что немногозадачная второй колл в батнике не выполнется пока первый не вернется хотя.... пробовать нужно |
|||
14
Chameleon1980
14.12.14
✎
17:59
|
из фара по контрл интер запусти любой док файл - следующий ты не запустишь из этого экземпляра пока первый док файл не закроешь в ворде.
Так может ясней будет. Фар будет ждать пока ты не закончишь с файлом работать. |
|||
15
spectre1978
14.12.14
✎
18:00
|
я попробовал, в простейшем случае получилось
!start.cmd: echo batch started call 1c.cmd echo 1c has been started 1c.cmd: "c:\program files (x86)\1cv82\8.2.19.76\bin\1cv8.exe" сообщение 1c has been started не появляется, пока я не закрою окно выбора базы. Т.е. похоже, что работает |
|||
16
Chameleon1980
14.12.14
✎
18:02
|
ну вот
|
|||
17
Chameleon1980
14.12.14
✎
18:02
|
тоже счас для успокоения попробовал
call d:\1.doc echo 1 echo 2 echo 3 |
|||
18
mehfk
14.12.14
✎
18:09
|
(17) Теперь так проверь
start "" /wait d:\1.doc echo 1 echo 2 echo 3 (0) Должно работать как у тебя написано. |
|||
19
spectre1978
14.12.14
✎
18:13
|
Заменил строку в файле 1c.cmd на такую:
"c:\program files (x86)\1cv82\8.2.19.76\bin\1cv8.exe" CONFIG /F "D:\1c8Local\UPP\" /DumpIB D:\1.dt /OUT "d:\backup.log" -NoTruncate /NXXXX /PYYYY Работает. Копия делается, третья строка первого батника не выполняется. Отличное решение. |
|||
20
tesei
14.12.14
✎
18:36
|
(19) не понял, что значит "третья строка первого батника"?
(4) написал код, пока не работает, где ошибка? FOR /L %%i IN (1,1,60) DO IF EXIST %file_name% ftp -v -n -s:%file_transport% && goto m1 ELSE TIMEOUT /T 60 /NOBREAK |
|||
21
Chameleon1980
14.12.14
✎
18:45
|
(20) от создания файла до последней записи много времени?
подчеркиваю не от запуска первой строки батника, а именно от создания? может DO IF EXIST он создался но еще не дописался до конца *??? |
|||
22
spectre1978
14.12.14
✎
19:03
|
(20) запускающий батник:
echo batch started call 1c.cmd echo 1c has been started Батник 1c.cmd, выполняющий архивацию "c:\program files (x86)\1cv82\8.2.19.76\bin\1cv8.exe" CONFIG /F "D:\1c8Local\UPP\" /DumpIB D:\1.dt /OUT "d:\backup.log" -NoTruncate /NXXXX /PYYYY вместо строки echo 1c has been started в первом батнике можно писать код отправки файла по FTP, он выполнится только после того как отработает архивация. |
|||
23
spectre1978
14.12.14
✎
19:07
|
(20) IF EXIST не будет работать, потому что dt-файл создается практически сразу после запуска, но он остается монопольно открытым в течение неопределенного времени, пока не будет завершен процесс создания дампа. Для больших баз это может измеряться десятками минут и часами.
|
|||
24
spectre1978
14.12.14
✎
19:10
|
... и главное, как выяснилось, это не нужно. call полностью спасает отца русской демократии - управление в первый батник не возвращается, пока не завершится процесс во втором.
|
|||
25
tesei
14.12.14
✎
19:19
|
echo работает, ftp все равно хочет запускаться раньше :(
|
|||
26
Chameleon1980
14.12.14
✎
20:10
|
ну я какбэ с call и начинал
просто думал проблема осталась и мы все еще ищем решение. |
|||
27
spectre1978
14.12.14
✎
21:29
|
(25) поменял последнюю строку первого файла на ftp.
Запустил. Архивация идет, ftp пока не вызвалось. Что я делаю не так? |
|||
28
spectre1978
14.12.14
✎
21:30
|
Пока выглядит вот так
D:\>"!start.cmd" D:\>echo batch started batch started D:\>call 1c.cmd D:\>"c:\program files (x86)\1cv82\8.2.19.76\bin\1cv8.exe" CONFIG /F "D:\1c8Local\UPP\" /DumpIB D:\1.dt /OUT "d:\backup.log" -NoTruncate /NОбслуживание /Pservice123 |
|||
29
spectre1978
14.12.14
✎
21:30
|
эх, пароль засветил. Ну да ладно
|
|||
30
tesei
14.12.14
✎
21:39
|
(27) Че-то я перегрелся. Завтра все пересмотрю. Благодарю за помощь!
|
|||
31
spectre1978
14.12.14
✎
21:59
|
(30) база сархивировалась, соответственно вид поменялся
D:\>"!start.cmd" D:\>echo batch started batch started D:\>call 1c.cmd D:\>"c:\program files (x86)\1cv82\8.2.19.76\bin\1cv8.exe" CONFIG /F "D:\1c8Local\UPP\" /DumpIB D:\1.dt /OUT "d:\backup.log" -NoTruncate /N... /P... D:\>ftp ftp> |
|||
32
spectre1978
14.12.14
✎
22:03
|
да нет, похоже что с call все работает.
. Единственное что еще может влиять - это что именно используется в качестве стартера. У меня - "c:\program files (x86)\1cv82\8.2.19.76\bin\1cv8.exe". А вот, например, 1сestart может вызывать необходимую версию клиента платформы и завершаться, что приведет к переходу управления после call раньше времени. Этот момент нужно учесть. Не происходит ли у вас чего-то подобного? |
|||
33
spectre1978
14.12.14
✎
22:08
|
Да! Проверил. 1с8s.exe дает именно такой эффект.
Попробуйте 1cv8.exe вместо 1cv8s.exe. |
|||
34
spectre1978
14.12.14
✎
22:11
|
1cv8s на самом деле стартует 1cv8 и прекращает работу
|
|||
35
tesei
15.12.14
✎
01:06
|
(34) да, переписал, все работает! Огромное спасибо и респект! :)
|
|||
36
tesei
15.12.14
✎
01:20
|
Интересный феномен: если 2 бат файла, то архивируется нормально, если все в одном бат файле, то получается расширение n1.
|
|||
37
lxndr
15.12.14
✎
07:25
|
символ &
|
|||
38
spectre1978
15.12.14
✎
08:15
|
на самом деле правильнее юзать 1cestart, в этом случае можно не заморачиваться с %platform%, автоматом вызовется та которая нужна. Но тогда все-таки придется отслеживать возможность открытия файла, как делал я :(
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |