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

Если я пытаюсь все делать через
os.system
, то он каждую команду делает сначала. Как их выполнить последовательно?
sanodin
os.system('ping ua.ru &   ping mail.ru & tracert google.com')
sanodin
Порядок выполнения команд в cmd
command1 & command2 — выполняется первая команда, затем вторая команда;
command1 && command2 — вторая выполниться, только если успешно выполнилась
первая;
command1 || command2 — выполняется вторая команда, только если первая не была выполнена (полученный код ошибки превышает ноль);
py.user.next
>>> import os
>>> cmd = '''
... echo 1
... echo 2
... echo 3
... '''
>>> os.system(cmd)
1
2
3
0
>>>
sanodin
Это только под виндой так?
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
>>>
missial
os.system('cd ' + path_to_dir & 'qmake tvz-win.pro & mingw32-make -j5' )
Папка каждый раз меняется( по дате). Так работать не хочет тоже. Как можно сделать по другому?
sanodin
os.system('cd ' + path_to_dir + ' & qmake tvz-win.pro & mingw32-make -j5' )
py.user.next
тогда лучше использовать
' & '.join

>>> cmd = ' & '.join((
...   'echo 1',
...   'echo 2'
... ))
>>>
sanodin
py.user.next
тогда лучше использовать
Не прошло…
все таки под виндой кодить то еще садомазо, упор на линукс системы, где в основном и ведутся разработки
py.user.next
import os
 
lst = (
  'cd c:\\dir',
  'qmake project.pro',
  'mingw32-make -j5'
)
 
cmd = ' & '.join(lst)
 
os.system(cmd)

sanodin
Не прошло…
это просто объединение команд, тогда их можно отдельно хранить
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB