Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 14, 2014 16:42:35

missial
Зарегистрирован: 2013-10-14
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Передать cmd 3 команды как одну команду

Пишу скрипт, который запускает сборку.
Для запуска сборки нужно сделать 3 команды в cmd
1. cd c:\dir
2. qmake project.pro
3. mingw32-make -j5

Если я пытаюсь все делать через

os.system
, то он каждую команду делает сначала. Как их выполнить последовательно?

Офлайн

#2 Янв. 14, 2014 19:45:11

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Передать cmd 3 команды как одну команду

os.system('ping ua.ru &   ping mail.ru & tracert google.com')

Офлайн

#3 Янв. 14, 2014 20:15:28

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Передать cmd 3 команды как одну команду

Порядок выполнения команд в cmd
command1 & command2 — выполняется первая команда, затем вторая команда;
command1 && command2 — вторая выполниться, только если успешно выполнилась
первая;
command1 || command2 — выполняется вторая команда, только если первая не была выполнена (полученный код ошибки превышает ноль);

Офлайн

#4 Янв. 14, 2014 21:57:08

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Передать cmd 3 команды как одну команду

>>> import os
>>> cmd = '''
... echo 1
... echo 2
... echo 3
... '''
>>> os.system(cmd)
1
2
3
0
>>>



Офлайн

#5 Янв. 15, 2014 06:26:04

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Передать cmd 3 команды как одну команду

Это только под виндой так?

Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> cmd = '''
... echo 1
... echo 2
... echo 3
... '''
>>> os.system(cmd)
1
0
>>> cmd = '''
... ping ua.ru
... ping google.com
... echo 1
... '''
>>> os.system(cmd)
Обмен пакетами с ua.ru [91.230.208.147] с 32 байтами данных:
Ответ от 91.230.208.147: число байт=32 время=51мс TTL=57
Ответ от 91.230.208.147: число байт=32 время=51мс TTL=57
Ответ от 91.230.208.147: число байт=32 время=51мс TTL=57
Ответ от 91.230.208.147: число байт=32 время=52мс TTL=57
Статистика Ping для 91.230.208.147:
    Пакетов: отправлено = 4, получено = 4, потеряно = 0
    (0% потерь)
Приблизительное время приема-передачи в мс:
    Минимальное = 51мсек, Максимальное = 52 мсек, Среднее = 51 мсек
0
>>>

Офлайн

#6 Янв. 15, 2014 08:46:57

missial
Зарегистрирован: 2013-10-14
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Передать cmd 3 команды как одну команду

os.system('cd ' + path_to_dir & 'qmake tvz-win.pro & mingw32-make -j5' )
Папка каждый раз меняется( по дате). Так работать не хочет тоже. Как можно сделать по другому?

Офлайн

#7 Янв. 15, 2014 11:44:13

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Передать cmd 3 команды как одну команду

os.system('cd ' + path_to_dir + ' & qmake tvz-win.pro & mingw32-make -j5' )

Офлайн

#8 Янв. 15, 2014 12:39:57

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Передать cmd 3 команды как одну команду

тогда лучше использовать

' & '.join

>>> cmd = ' & '.join((
...   'echo 1',
...   'echo 2'
... ))
>>>



Офлайн

#9 Янв. 15, 2014 19:01:35

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Передать cmd 3 команды как одну команду

py.user.next
тогда лучше использовать
Не прошло…
все таки под виндой кодить то еще садомазо, упор на линукс системы, где в основном и ведутся разработки

Отредактировано sanodin (Янв. 15, 2014 19:02:08)

Офлайн

#10 Янв. 15, 2014 20:21:46

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Передать cmd 3 команды как одну команду

import os
 
lst = (
  'cd c:\\dir',
  'qmake project.pro',
  'mingw32-make -j5'
)
 
cmd = ' & '.join(lst)
 
os.system(cmd)

sanodin
Не прошло…
это просто объединение команд, тогда их можно отдельно хранить



Отредактировано py.user.next (Янв. 15, 2014 23:39:19)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version