Как выполнить команду командной строки из python
Я попробовал что-то вроде этого, но безрезультатно:
command = "cmd.exe"
proc = subprocess.Popen(command, stdin = subprocess.PIPE, stdout = subprocess.PIPE)
proc.stdin.write("dir c:\\")
python
windows Поделиться Источник Adrian 30 марта 2011 в 13:10
7 ответов
- выполнить скрипт python с функцией из командной строки, Linux
У меня есть мой файл python под названием convertImage.py, и внутри этого файла у меня есть скрипт, который преобразует изображение по моему вкусу, весь скрипт преобразования установлен внутри функции под названием convertFile(fileName) Теперь моя проблема заключается в том, что мне нужно…
- Как выполнить команду из командной строки процесса, запущенного на Linux
Допустим, я выдаю команду из командной строки Linux. Это приведет к тому, что Linux создаст новый процесс и допустит, что процесс ожидает получить команду от пользователя. Например: я запущу сценарий python test.py, который примет команду от пользователя. $python test.py…
59
как насчет просто:
import os
os.system('dir c:\\')
Поделиться rmflow 30 марта 2011 в 13:19
25
Вы, вероятно, хотите попробовать что-то подобное:
command = "cmd.exe /C dir C:\\"
Я не думаю, что вы можете трубить в cmd.exe
…, если вы исходите из unix фона, ну, у cmd.exe
есть некоторые уродливые бородавки!
EDIT: По словам Свена Марнаха, вы можете подключиться к cmd.exe
. Я попытался следовать в python shell:
>>> import subprocess
>>> proc = subprocess.Popen('cmd.exe', stdin = subprocess.PIPE, stdout = subprocess.PIPE)
>>> stdout, stderr = proc.communicate('dir c:\\')
>>> stdout
'Microsoft Windows [Version 6.1.7600]\r\nCopyright (c) 2009 Microsoft Corporatio
n. All rights reserved.\r\n\r\nC:\\Python25>More? '
Как вы можете видеть, вам еще предстоит немного поработать (возвращается только первая строка), но вы, возможно, сможете заставить это работать…
Поделиться Daren Thomas 30 марта 2011 в 13:17
13
Попробуй:
import os
os.popen("Your command here")
Поделиться vezon122 06 декабря 2014 в 07:39
7
proc.stdin.flush()
после записи в канал и посмотрите, начнет ли все вести себя так, как вы ожидаете. Явная очистка канала означает, что вам не нужно беспокоиться о том, как именно настроена буферизация.Кроме того, не забудьте включить "\n"
в конце вашей команды, иначе ваш ребенок shell будет сидеть там в командной строке, ожидая завершения ввода команды.
Я писал об использовании Popen для управления внешним экземпляром shell более подробно по адресу: Выполнение трех команд в одном процессе с Python
Как и в случае с этим вопросом, этот трюк может быть полезен, если вам нужно поддерживать состояние shell при нескольких вызовах out-of-process на машине Windows.
Поделиться ncoghlan 30 марта 2011 в 14:33
4
Почему вы хотите позвонить cmd.exe
? cmd.exe
os.chdir("C:\\")
. Старайтесь не вызывать внешние команды, если Python может их предоставить. На самом деле большинство команд операционной системы предоставляются через модуль os
(и sys). Я предлагаю вам взглянуть на документацию по модулю os
, чтобы ознакомиться с различными доступными методами.Поделиться kurumi 30 марта 2011 в 13:25
4
Использование ‘ и » в то же время отлично подходит для меня (Windows 10, python 3)
import os
os.system('"some cmd command here"')
например, чтобы открыть свой веб-браузер, я могу использовать это:
os.system('"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"')
(Правка) для более простого способа открыть ваш браузер я могу использовать это:
import webbrowser
webbrowser.open('website or leave it alone if you only want to open the
browser')
Поделиться AndrewMZ 22 января 2020 в 02:48
- выполнение операции командной строки windows из python
Возможный Дубликат : Как вызвать внешнюю команду в Python Я хочу выполнить операцию командной строки windows, используя python. Чтобы выполнить команду, я должен перейти в определенный каталог в моей системе, а затем выполнить команду. например 1) Перейти в определенный каталог c:\some\directory…
- Как выполнить команду в окне iTerm из командной строки?
Как запустить сеанс iTerm из командной строки, передав команду, которая должна быть выполнена в окне iTerm? Аналог xterm — -e , т. е. xterm -e sleep 10
3
Черпая вдохновение из ответа Дарена Томаса (и редактирования), попробуйте это:
proc = subprocess.Popen('dir C:\\', shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
out, err = proc.communicate()
out
теперь будет содержать текстовый вывод.
Ключевым моментом здесь является то , что модуль подпроцесса уже обеспечивает интеграцию shell с shell=True
, поэтому вам не нужно напрямую вызывать cmd.exe.
Напомним, что если вы находитесь в Python 3, это будет байт, поэтому вы можете сделать out.decode()
для преобразования в строку.
Поделиться gkimsey 28 февраля 2019 в 18:09
Похожие вопросы:
Как выполнить сложную строку командной строки SoX в Python
Я пытаюсь вызвать SoX в командной строке, используя модуль подпроцесса в Python для обработки аудиофайла. Python жалуется, что не может найти файлы, однако та же команда отлично работает, если ее…
Выполнить команду командной строки из NSIS
Я создаю свой первый сценарий NSI, и мне просто интересно, могу ли я выполнить команду командной строки из NSIS или я должен просто выполнить batch file? Я действительно не знаю, с чего начать, и…
Выполните команду в Vim из командной строки
Есть ли способ выполнить команду Vim для файла из командной строки? Я знаю, что верно обратное, как это: :!python % Но что, если я захочу :retab файл, не открывая его в Vim? Например: > vim…
выполнить скрипт python с функцией из командной строки, Linux
У меня есть мой файл python под названием convertImage.py, и внутри этого файла у меня есть скрипт, который преобразует изображение по моему вкусу, весь скрипт преобразования установлен внутри…
Как выполнить команду из командной строки процесса, запущенного на Linux Допустим, я выдаю команду из командной строки Linux. Это приведет к тому, что Linux создаст новый процесс и допустит, что процесс ожидает получить команду от пользователя. Например: я запущу…
выполнение операции командной строки windows из python
Возможный Дубликат : Как вызвать внешнюю команду в Python Я хочу выполнить операцию командной строки windows, используя python. Чтобы выполнить команду, я должен перейти в определенный каталог в…
Как выполнить команду в окне iTerm из командной строки?
Как запустить сеанс iTerm из командной строки, передав команду, которая должна быть выполнена в окне iTerm? Аналог xterm — -e , т. е. xterm -e sleep 10
Невозможно выполнить команду Tesseract из python
Я пытаюсь выполнить tesseract abc.tif abc.txt из кода python как subprocess.call([tesseract abc.tif abc.txt], shell=True, stderr=subprocess.PIPE) но его отображение Тессеракт abc.tif abc.txt не…
Выполнение инструментов командной строки python из NodeJS
Что бы быть лучший способ, чтобы выполнить команду строки из nodejs для python? Я работаю над приложением, которое может генерировать сертификаты блокчейна….
Как включить команду «idle» из командной строки Windows
Я помню, что в какой-то момент я мог открыть python IDLE из командной строки, просто набрав «idle» return, что привело бы к появлению редактора python idle. Недавно я получил новую машину…
Как выполнить две команды в одной строке в Windows CMD?
Я хочу запустить две команды в консоли Windows CMD.
В Linux году я бы сделал это так
touch thisfile ; ls -lstrh
Как это делается на Windows?
windows batch-file command-line cmdПоделиться Источник flybywire 08 ноября 2011 в 18:31
18 ответов
- Как выполнить более одной команды в одной строке
Я хочу выполнить команду на cmd windows cd document ren log.txt 1.txt Но я хочу выполнить команду в одной строке пример : документ CD / РЕН log.txt 1.txt
- Как выполнить две команды в Windows CMD?
У меня есть две команды, которые мне нужно запустить на CMD.I хочу сделать файл bash, чтобы я мог запускать команды в один клик. И я хочу подождать некоторое время для выполнения 1-го полностью sudo docker run -d —link selenium-hub:hub selenium/node-chrome sudo docker run -d —link…
1486
Как это на всех Microsoft OSes с 2000 года, и все еще хорошо сегодня:
dir & echo foo
Если вы хотите, чтобы вторая команда выполнялась только в том случае, если первая успешно завершилась:
dir && echo foo
Синтаксис одного амперсанда (&) для выполнения нескольких команд в одной строке восходит к Windows XP, Windows 2000 и некоторым более ранним версиям NT.T echo foo
Поделиться djdanlib 08 ноября 2011 в 18:33
608
Цитата из документации:
Использование нескольких команд и условных символов обработки
Вы можете выполнить несколько команд из одной командной строки или сценария, используя условные символы обработки. При выполнении нескольких команд с символами условной обработки команды справа от символа условной обработки действуют на основе результатов команды слева от символа условной обработки.
Например, вы можете выполнить команду только в том случае, если предыдущая команда завершится неудачно. Или вы можете выполнить команду только в том случае, если предыдущая команда выполнена успешно.
Вы можете использовать специальные символы, перечисленные в следующей таблице, для передачи нескольких команд.
& [...]
command1 & command2
Используется для разделения нескольких команд в одной командной строке. Cmd.exe запускает первую команду, а затем вторую команду.
&& [...]
command1 && command2
Используйте для выполнения команды, следующей за &&, только в том случае, если команда, предшествующая символу, выполнена успешно. Cmd.exe запускает первую команду, а затем запускает вторую команду только в том случае, если первая команда успешно завершена.
|| [...]
command1 || command2
Используйте для выполнения команды, следующей за||, только в том случае, если команда, предшествующая||, не выполняется. Cmd.exe запускает первую команду, а затем запускает вторую команду только в том случае, если первая команда не была успешно завершена (получает код ошибки, превышающий ноль).
( ) [...]
(command1 & command2)
Используется для группировки или размещения нескольких команд.
; or ,
command1 parameter1;parameter2
Используется для разделения параметров команды.
Поделиться Raihan 08 ноября 2011 в 18:36
76
&
-это эквивалент Bash для ;
( выполнение команд), а &&
-эквивалент Bash для &&
(выполнение команд только в том случае, если предыдущее не вызвало ошибки).
Поделиться manojlds 08 ноября 2011 в 18:37
25
Вы можете использовать & для выполнения команд одну за другой. Пример: c:\dir & vim myFile.txt
Поделиться scrappedcola 08 ноября 2011 в 18:34
21
Если вы хотите создать ярлык cmd (например, на рабочем столе), добавьте параметр /k (/k означает сохранить, /c закроет окно):
cmd /k echo hello && cd c:\ && cd Windows
Поделиться TroodoN-Mike 12 ноября 2013 в 06:39
18
Вы можете использовать вызов , чтобы преодолеть проблему слишком ранней оценки переменных среды — например,
set A=Hello & call echo %A%
Поделиться SSi 13 марта 2016 в 11:06
9
При выполнении нескольких команд в одной строке может использоваться несколько символов обработки , что в некоторых случаях может привести к перенаправлению обработки, изменению вывода в других случаях или просто к сбою. Одним из важных случаев является размещение в одной строке команд, которые управляют переменными.
@echo off
setlocal enabledelayedexpansion
set count=0
set "count=1" & echo %count% !count!
0 1
Как вы видите в приведенном выше примере, когда команды, использующие переменные, помещаются в одну строку, вы должны использовать отложенное расширение для обновления значений переменных. Если ваша переменная индексирована, используйте команду CALL с модификаторами %%, чтобы обновить ее значение в той же строке:
set "i=5" & set "arg!i!=MyFile!i!" & call echo path!i!=%temp%\%%arg!i!%%
path5=C:\Users\UserName\AppData\Local\Temp\MyFile5
Поделиться sambul35 03 августа 2016 в 14:31
8
cmd /c ipconfig /all & Output.txt
Эта команда выполняет команду и открывает файл Output.txt
в одной команде
Поделиться dpp.2325 16 апреля 2014 в 05:41
8
Итак, я пытался включить конкретную задачу запуска RegAsm
(register assembly) из контекстного меню. Проблема, с которой я столкнулся, заключалась в том, что результат будет flash и исчезнет до того, как я смогу его прочитать. Поэтому я попытался передать по трубопроводу Pause
, который не работает при сбое команды (как упоминалось здесь, команда паузы не работает в скрипте .bat, а здесь Batch file команда PAUSE не работает )., поэтому я попробовал cmd /k
, но это оставляет окно открытым для дополнительных команд (я просто хочу прочитать результат). Поэтому я добавил в цепочку pause
, за которым следует exit
, в результате чего получилось следующее:
cmd /k C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe "%1" /codebase \"%1\" & pause & exit
Это работает как заклинание-RegAsm запускается в файле и показывает его результаты, затем отображается приглашение «Press any key to continue…», а затем окно командной строки закрывается при нажатии клавиши.
P.S. Для других, кто может быть заинтересован, вы можете использовать следующие записи файла .reg, чтобы добавить ассоциацию dllfile к файлам .dll, а затем расширение команды RegAsm (обратите внимание на экранированные кавычки и обратные косые черты):
[HKEY_CLASSES_ROOT\.dll]
"Content Type"="application/x-msdownload"
@="dllfile"
[HKEY_CLASSES_ROOT\dllfile]
@="Application Extension"
[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm]
@="Register Assembly"
[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm\command]
@="cmd /k C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\regasm.exe \"%1\" /codebase \"%1\" & pause & exit"
Теперь у меня есть хорошее меню щелчка правой кнопкой мыши, чтобы зарегистрировать assembly.
Поделиться SNAFUBAR 26 января 2015 в 20:35
4
Чтобы выполнить две команды одновременно, необходимо поместить символ & (амперсанд) между двумя командами. Вот так:
color 0a & start chrome.exe
Ваше здоровье!
Поделиться PryroTech 13 декабря 2016 в 04:41
4
Я пытаюсь сделать два пинга в одном окне, и это последовательная команда в одной строке. После завершения первой, выполните вторую команду.
Решение состояло в том, чтобы объединить с start /b
в командной строке Windows 7.
Начните как обычно, без /b
, и запустите в отдельном окне.
Команда, используемая для запуска в той же строке, является:
start /b command1 parameters & command2 parameters
В любом случае, если вы хотите проанализировать выходные данные, я не рекомендую использовать это. Я заметил, что вывод скремблирован между выводами команд.
Поделиться sdcxp 18 марта 2017 в 11:16
4
Ну, у вас есть два варианта: Трубопровод или просто &
:
DIR /S & START FILE.TXT
Или,
tasklist | find "notepad.exe"
Piping ( |
) больше подходит для того, чтобы брать выходные данные одной команды и помещать их в другую. И ( &
) просто говорит: «Запускай то-то и то-то».
Поделиться PyDever 29 апреля 2017 в 23:16
1
Нет, cd / && tree && echo %time%
. Время, отраженное эхом, совпадает с моментом выполнения первой команды.
У трубопровода есть некоторые проблемы, но это не критично, пока люди знают, как он работает.
Поделиться notarealname 22 июля 2016 в 08:56
1
Еще один пример: Например, когда мы используем систему сборки gulp
вместо
gulp
— по умолчанию > сборка
gulp build
— build build-папка
gulp watch
— запустить файл-смотреть
gulp dist
— build dist-папка
Мы можем сделать это с помощью одной строки:
cd c:\xampp\htdocs\project & gulp & gulp watch
Поделиться Mile Mijatović 07 мая 2017 в 14:09
0
Когда вы пытаетесь использовать переменные или манипулировать ими в одной строке, остерегайтесь их содержимого! E.g. переменная, подобная следующей
PATH=C:\Program Files (x86)\somewhere;"C:\Company\Cool Tool";%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
может привести к большим неприятностям, если вы используете его как %PATH%
- Заключительные скобки завершают ваше групповое заявление
- Двойные кавычки не позволяют использовать
%PATH%
для решения проблемы скобок - И что будет содержать ссылочная переменная типа
%USERPROFILE%
?
Поделиться V15I0N 11 августа 2017 в 22:22
0
Да, есть. Это &
.
&&
выполнит команду 2, когда команда 1 будет завершена, при условии, что она не потерпела неудачу.
&
будет выполняться независимо.
Поделиться هادی کشاورز Hadi Keshavarz 19 апреля 2019 в 03:29
0
Используйте символ &
в windows, чтобы использовать команду в одной строке
C:\Users\Arshdeep Singh>cd Desktop\PROJECTS\PYTHON\programiz & jupyter notebook
как в linux году мы используем,
touch thisfile ; ls -lstrh
Поделиться Arshdeep Kharbanda 20 мая 2020 в 07:01
-2
Это просто: просто дифференцируйте их с помощью знаков &&
.
Пример:
echo "Hello World" && echo "GoodBye World".
«Goodbye World» будет напечатано после «Hello World».
Поделиться Rajan Dhanowa 05 июня 2017 в 15:06
Похожие вопросы:
Создайте batch file для запуска cmd от имени администратора, а затем выполните две команды
Моя компания должна изменить ключ windows на куче машин, и я хотел бы включить все шаги в сценарий. Чтобы изменить ключ, пока пользователь все еще входит в систему (у них нет прав администратора),…
Как запустить две команды в одной строке for loop в bash?
Почему я не могу выполнить две команды в одной строке цикла bash? $ for i in {1..100} do printf %s $(date) ; mysql -uroot -e SHOW SLAVE STATUS\G | grep Seconds_Behind_Master ; sleep 10 ; done -bash:…
Как запустить несколько команд параллельно в командной строке windows cmd?
Я знаю, что можно запустить две команды в одной строке в Windows CMD, как это: dir & echo foo Но как можно выполнить две команды параллельно? Я также знаю, что этого можно достичь, используя…
Как выполнить более одной команды в одной строке
Я хочу выполнить команду на cmd windows cd document ren log.txt 1.txt Но я хочу выполнить команду в одной строке пример : документ CD / РЕН log.txt 1.txt
Как выполнить две команды в Windows CMD?
У меня есть две команды, которые мне нужно запустить на CMD.I хочу сделать файл bash, чтобы я мог запускать команды в один клик. И я хочу подождать некоторое время для выполнения 1-го полностью sudo…
Есть ли способ разделить имя переменной при написании двух команд в одной строке в windows cmd?
Я могу запустить две команды в одной строке в Windows CMD, но я хотел бы разделить имя переменной так, чтобы при повторном запуске команды мне просто нужно было изменить имя переменной один раз…
Как запустить несколько команд в одной строке с помощью cmd в windows 10
как сказано в названии, мне нужно выполнить ровно две команды в одной строке, используя cmd в windows 10. Как это возможно?
Node js — как последовательно выполнить две команды windows и получить результат
Я пытаюсь выполнить две команды windows последовательно и получить результат более поздней. Что-то вроде: cd ${directory} sfdx force:source:convert -d outputTmp/ —json Я просмотрел и попробовал…
как выполнить команду CMD из выходных данных другой команды
В командной строке Windows (CMD), когда выполняется моя команда command1, выводится полная команда (command2) с аргументами. Мой вопрос заключается в том, есть ли способ выполнить command2…
Как выполнить 2 разные команды cmd на C#
Я работал над проектом, который должен был выполнить две команды cmd на C#, я искал, как это сделать, но ничего не работало для меня, и все давали решение выполнить только одну команду cmd. Я хотел…
Команда | Выполняемое действие |
---|---|
appwiz.cpl | запуск системного средства для изменения или удаления программ |
arp | отображение и изменение ARP таблиц преобразования IP-адресов в физические, используемые протоколом разрешения адресов |
assoc | вывод или изменение сопоставлений по расширениям имен файлов |
at | запуск программ в указанное время |
attrib | отображение и изменение атрибутов файлов |
azman.msc | диспетчер авторизации |
bcdboot | средство создания и восстановления файлов данных конфигурации загрузки |
bcdedit | редактирование изменений в базе загрузки начальной загрузки системы |
break | изменение режима обработки комбинации клавиш «Ctrl» + «C» |
blastcln | утилита очистки от червей |
bootcfg | настройка, извлечение, изменение или удаление параметров командной строки в файле Boot.ini в Windows XP |
call | вызов одного пакетного файла из другого |
cacls | просмотр и редактирование изменение таблиц управления доступом (ACL) к файлам |
calc | запуск приложения Калькулятор |
cd | вывод имени или изменение текущей папки |
charmap | таблица символов |
chcp | вывод или изменение активной кодовой страницы |
chdir | вывод или смена текущей папки |
copy | копирование одного или нескольких файлов |
chkdsk | проверка диска на ошибки и вывод статистики |
chkntfs | вывод или изменение параметров проверки диска во время загрузки |
ciddaemon | сервис индексации файлов |
cipher | шифрование файлов и папок в NTFS |
cleanmgr | утилита Очистка диска |
cls | очистка экрана |
cmd | запуск еще одного интерпретатора командной строки Windows |
compmgmt.msc | открытие консоли Управление компьютером |
color | установка цветов переднего плана и фона по умолчанию |
comexp.msc | службы компонентов |
comp | сравнение содержимого двух файлов или двух наборов файлов |
compact | просмотр и изменение параметров сжатия файлов в разделах NTFS |
compmgmt.msc | Управление компьютером |
computerdefaults | выбор приложений по умолчанию |
control | Панель управления |
control admintools | администрирование |
control desktop | настройка экрана и персонализация |
control folder | свойства папок в параметрах Проводника |
control fonts | шрифты |
control keyboard | открытие окна свойства клавиатуры |
control mouse | свойства мыши |
control printer | устройства и принтеры |
control schedtasks | Планировщик заданий |
control userpasswords2 | управление учетными записями пользователей |
convert | преобразование файловой системы тома FAT в NTFS (не работает на текущем диске) |
copy | копирование файлов в другое место |
credwiz | архивация и восстановление имен пользователей и паролей |
date | вывод или установка текущей даты |
debug | средство отладки и редактирования программ |
defrag | запуск дефрагментации дисков |
del | удаление одного или нескольких файлов |
desk.cpl | настройка разрешения экрана |
devicepairingwizard | добавление нового устройства |
devmgmt.ms | Диспетчер устройств |
dfrgui | оптимизация дисков (дефрагментация) |
dir | вывод списка файлов и подпапок из указанной папки |
diskmgmt.ms | открытие оснастки Управление дисками |
diskpart | отображение и настройка свойств раздела диска |
diskperf | включение или отключение счетчика производительности |
doskey | редактирование командной строки, повторный вызов команд Windows, создание макросов |
dpiscaling | настройка параметров дисплея |
dxdiag | средство диагностики DirectX |
echo | вывод сообщений и переключение режима отображения команд на экране |
endlocal | завершение локальных изменений среды для пакетного файла |
erase | удаление одного или нескольких файлов (затирание) |
esentutl | утилиты технического обслуживания баз данных Microsoft Windows |
eudcedit | редактор личных знаков |
eventcreate | создание запись об особом событии в указанном журнале событий |
eventvwr.msc | просмотр событий |
expand | распаковка сжатых файлов |
explorer | Проводник Windows |
fc | сравнение файлов или наборов файлов, вывод различий между ними |
find | поиск текстовой строки в одном или в нескольких файлах |
findstr | поиск текстовой строки в файле |
finger | сведения о пользователях указанной системы, на которой запущена служба Finger |
firewall.cpl | Брандмауэр Защитника Windows |
for | запуск указанной команды для каждого файла в наборе |
format | форматирование диска |
fsmgmt.msc | общие папки |
fsquirt | передача файлов по Bluetooth |
fsutil | показ и настройка свойств файловой системы |
ftype | вывод или изменение типов файлов при сопоставлении имен файлов |
ftp | обмен файлами по FTP |
goto | передача управления в указанную строку пакетного файла |
getmac | отображение MAC-адресов одного или нескольких сетевых адаптеров |
gpresult | информация о групповой политике для компьютера или пользователя |
graftabl | отображение расширенного набора символов в графическом режиме Windows |
gpedit.msc | Редактор локальной групповой политики |
gpupdate | обновление параметров нескольких групповых политик |
hdwwiz | мастер установки оборудования |
icacls | отображение, изменение, архивация, восстановление списков ACL для файлов и каталогов |
iexpress | создание самораспаковывающегося архива |
if | условная обработка в пакетных программах (файлах) |
ipconfig | информация о IP адресе |
joy.cpl | игровые устройства |
label | создание, изменение и удаление меток тома для дисков |
lodctr | обновление параметров реестра, относящееся к производительности счетчиков |
logman | управление службой «Оповещения и журналы производительности» |
logoff | завершение сеанса |
lpksetup | установка или удаление языков интерфейса Windows |
lusrmgr.msc | локальные пользователи и группы |
magnify | запуск приложения Лупа |
main.cpl | свойства мыши |
makecab | архивация файлов в CAB архив |
md | создание каталога (папки) |
mdsched | средство проверки оперативной памяти на ошибки |
mkdir | создать каталог (папку) |
mmsys.cpl | свойства звука |
mode | конфигурирование системных устройств |
mofcomp | 32-разрядный компилятор |
more | последовательный вывод данных по частям размером в один экран |
mountvol | создание, просмотр и удаление точек подключения |
move | перемещение одного или нескольких файлов из одной папки в другую |
mrinfo | работа с многоадресными сообщениями |
mrt | запуск средства удаления вредоносных программ Malicious Software Removal Tool |
msconfig | конфигурация системы |
msg | отправка сообщений пользователю |
msinfo32 | сведения о системе |
mspaint | запуск графического редактора Paint |
msra | удаленный помощник Windows |
net | управление сетевыми ресурсами |
ncpa.cpl | сетевые подключения |
netstat | отображение статистики протоколов и текущих сетевых подключений TCP/IP |
netplwiz | управление учетными записями пользователей |
notepad | запуск программы Блокнот |
odbcconf | настройка драйвера ODBC |
openfiles | вывод списка открытых файлов и папок, открытых в системе |
optionalfeatures | включение или отключение компонентов Windows |
osk | запуск экранной клавиатуры |
path | вывод или установка пути поиска исполняемых файлов |
pause | приостановка выполнения пакетного файла, вывод сообщения |
perfmon | системный монитор |
resmon | монитор ресурсов |
popd | восстановление предыдущего значения текущей папки, сохраненное командой pushd |
prompt | изменение командной строки Windows |
pushd | сохранение текущего каталога, а затем изменение каталога |
ping | отправка пакетов на указанный адрес |
powercfg | управление параметрами электропитания системы |
печать текстового файла | |
qprocess | отображение информации о процессах |
qwinsta | отображение информации о сеансах служб удаленных рабочих столов |
rd | удаление каталога |
recover | восстановление сохранившихся данных на повреждённом диске |
recdisc | создание диска восстановления Windows |
reg | команда для работы с реестром |
regedit | Редактор реестра |
rem | помещение комментария в пакетный файл или в файл config.sys |
ren | переименование файлов и папок |
rename | переименование файлов и папок |
rmdir | удаление каталога |
replace | замена файлов |
rstrui | восстановление Windows из точек восстановления системы |
runas | для использования приложений от имени другого пользователя |
rwinsta | сброс значений подсистем оборудования и программ сеанса в начальное состояние |
secpol.msc | локальная политика безопасности |
services.msc | службы |
set | вывод, установка и удаление переменных среды Windows |
setlocal | начало локальных изменений среды в пакетном файле |
sc | отображение и настройка служб (фоновых процессов) |
sfc | проверка целостности всех защищенных системных файлов и замена неправильных |
sigverif | проверка подписи файла |
shift | изменение содержимого заменяемых параметров для пакетного файла |
slui | активация Windows |
sndvol | микшер громкости |
start | запуск указанной программы или команды в отдельном окне |
schtasks | запуск программ и выполнение команд на ПК по расписанию |
sdbinst | установщик базы данных совместимости |
shutdown | перезагрузка или выключения компьютера |
sort | программа сортировки |
subst | сопоставление имени диска указанному пути |
sysdm.cpl | свойства системы |
systeminfo | информация о конфигурации операционной системы |
taskkill | принудительное завершение процесса или приложения |
tasklist | показ всех задач, выполняемых в данный момент, включая службы |
taskmgr | Диспетчер задач |
tcmsetup | установка клиента телефонии |
time | просмотр и изменение текущего времени |
timedate.cpl | настройка времени и даты |
title | назначение заголовка текущего окна интерпретатора командной строки |
tracert | трассировка маршрута к указанному узлу |
tree | графическое отображение структуры заданного диска или папки |
tscon | присоединение сеанса пользователя к сеансу удаленного рабочего стола |
tsdiscon | отключение сеанса служб удаленных рабочих столов |
tskill | прекращение процесса |
type | вывод содержимого текстовых файлов |
typeperf | вывод сведений о производительности на экран или в журнал |
utilman | центр специальных возможностей |
ver | вывод сведений о версии Windows |
verifier | диспетчер проверки драйверов |
verify | установка режима проверки в Windows правильности записи файлов на диск |
vol | вывод метки и серийного номера тома для диска |
vssadmin | программа командной строки для администрирования службы теневого копирования тома |
w32tm | показ текущих параметров для отображения часового пояса |
winver | информация о версии Windows на экране |
wmic | сведения об инструментарии WMI в интерактивной командной оболочке |
write | текстовый редактор WordPad |
wscui.cpl | центр безопасности и обслуживания |
wusa | автономный установщик обновлений |
xcopy | копирование файлов и дерева папок |
Как одновременно выполнить несколько команд в командной строке
Windows, Windows 10, Windows 7, Windows 8, Windows Server, Windows Vista, Windows XP- Recluse
- 13.09.2020
- 2 578
- 0
- 16
- 16
- 0
- Содержание статьи
Для объединения команд в командной строке в одну строку, используются специальные символы, которые называются символами условной обработки. У командного процессора в MS-DOS и интерпретатора командной строки Windows в виде COMMAND..
- Символ:
&
Написание в одну строку:команда 1 & команда 2
Написание в несколько строк:команда 1 команда 2
В командной строке можно выполнить две и более команды, написав их в одну строку (команду), и разделив их символом &. Работает это следующим образом: после выполнения первой команды, будет выполнена вторая команда, и т. д. В качестве примера рассмотрим запуск Калькулятора (calc.exe), а затем — Блокнота (notepad.exe):
calc.exe & notepad.exe
- Символ:
&&
Написание в одну строку:команда 1 && команда 2
Написание в несколько строк:команда 1 if %errorlevel% EQU 0 команда 2
В отличии от предыдущего варианта, при разделении команд с помощью символов &&, команда, следующая после данных символов, будет выполнена только в том случае, если первая команда была завершена без ошибок. Например, попробуем запустить процесс форматирования диска F:, и если оно выполнится успешно — скопируем туда содержимое директории D:\Archive. Соответственно, если форматирование завершится с ошибкой, то и вторая команда на копирование не будет работать.
format F: /Q && copy D:\Archive\*.* F:
- Символ:
||
Написание в одну строку:команда 1 || команда 2
Написание в несколько строк:команда 1 if %errorlevel% NEQ 0 команда 2
Полная противоположность предыдущему варианту — вторая команда срабатывает только при условии того, что первая команда не была успешно выполнена. К примеру, попробуем запустить несуществующую программу program.exe, а поскольку такой не существует (т. е. первая команда завершится с ошибкой) — запустим вторую программу в виде Калькулятора (calc.exe):
program.exe || calc.exe
- Символ:
(
и)
Написание в одну строку: (команда 1 & команда 2) && команда 3В некоторых случаях может понадобится написать более сложные условия выполнения команд в одной строке, где от результата выполнения команды зависят дальнейшие действия. Здесь на помощь придут операторы ( и ), позволяющие группировать команды. К примеру, нужно проверить наличие файла по адресу F:\data.txt, и если он есть — открыть его в Блокноте, если же его нет — предварительно скопировать его по адресу D:\data.txt и уже после этого открыть в Блокотне.
dir F:\data.txt && (notepad.exe F:\data.txt) || (copy D:\data.txt F:\data.txt & notepad.exe F:\data.txt)
В прочем ничто не мешает изменить условия, заменив операторы, и подстроив команды под нужный Вам сценарий.
Оболочки командной строки и командная строка для разработчиков — Visual Studio (Windows)
- Чтение занимает 2 мин
В этой статье
В Visual Studio 2019 есть две оболочки командной строки для разработчиков:
Командная строка разработчика для Visual Studio — стандартная командная строка с определенными переменными среды, упрощающая работу с инструментами разработки. Доступно с версии Visual Studio 2015.
PowerShell для разработчиков Visual Studio — более функциональное средство, чем командная строка. Например, в нем можно передать результат одной команды (называемой cmdlet ) в другой cmdlet. В этой оболочке доступны те же переменные среды, что и в Командной строке разработчика. Доступно с версии Visual Studio 2019.
Начиная с версии 16.5, в Visual Studio 2019 доступен встроенный терминал, где можно работать как с Командной строкой разработчика, так и с PowerShell для разработчиков. Можно открыть несколько вкладок для каждой оболочки. Терминал Visual Studio построен на основе Терминала Windows. Чтобы открыть терминал в Visual Studio, выберите элементы Вид > Терминал.
При запуске в Visual Studio одной из оболочек как отдельного приложения или в окне терминала открывается каталог текущего решения (если оно загружено). Это упрощает выполнение команд для решения или его проектов.
В обеих оболочках заданы определенные переменные среды. Это упрощает работу с инструментами командной строки. Открыв эти оболочки, можно выполнять команды для различных служебных программ, не указывая их расположения.
Запуск в Visual Studio
Выполните следующие действия, чтобы открыть в Visual Studio Командную строку разработчика или PowerShell для разработчиков:
Запустите Visual Studio.
В строке меню выберите элементы Инструменты > Командная строка > Командная строка разработчика или PowerShell для разработчиков.
Запуск из меню Windows
Другой способ запуска оболочек — из меню «Пуск». В зависимости от версии Visual Studio, дополнительно установленных пакетов SDK и рабочих нагрузок может иметься несколько вариантов командных строк.
Windows 10
Выберите Пуск и прокрутите до буквы V.
Разверните папку Visual Studio 2019.
Выберите вариант Developer Command Prompt for VS 2019 (Командная строка разработчика для VS 2019) или Developer PowerShell for VS 2019 (PowerShell для разработчиков для VS 2019).
Кроме того, вы можете начать вводить имя оболочки в поле поиска на панели задач и выбрать нужный результат, так как в списке результатов начнут отображаться найденные совпадения.
Windows 8.1
Перейдите на экран Пуск, нажав клавишу с логотипом Windows на клавиатуре, например.
На начальном экране нажмите Ctrl+Tab, чтобы открыть список приложений, а затем нажмите V. Появится список, включающий все установленные командные строки Visual Studio.
Выберите вариант Developer Command Prompt for VS 2019 (Командная строка разработчика для VS 2019) или Developer PowerShell for VS 2019 (PowerShell для разработчиков для VS 2019).
Windows 7
Выберите Пуск а затем разверните Все программы.
Выберите элементы Visual Studio 2019 > Инструменты Visual Studio > Developer Command Prompt for VS 2019 (Командная строка разработчика для VS 2019) или Developer PowerShell for VS 2019 (PowerShell для разработчиков для VS 2019) .
Если установлены другие пакеты SDK, например, пакет SDK для Windows 10 или предыдущих версий, могут появиться дополнительные командные строки. Требуемая версия командной строки указана в документации по соответствующим инструментам.
Запуск из обозревателя файлов
Обычно ярлыки для установленных оболочек помещаются в папку меню «Пуск» для Visual Studio, например в %ProgramData%\Microsoft\Windows\Start Menu\Programs\Visual Studio 2019\Visual Studio Tools. Но если поиск командной строки не дает ожидаемых результатов, попробуйте вручную найти нужные файлы на компьютере.
Командная строка разработчика
Выполните поиск файла командной строки (VsDevCmd.bat) или перейдите в папку «Инструменты» Visual Studio ( %ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\Common7\Tools — путь зависит от версии Visual Studio, выпуска и расположения установки).
Когда вы найдете файл командной строки, откройте его. Для этого введите следующую команду в стандартном окне командной строки:
"%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat"
Кроме того, вы можете ввести следующую команду в диалоговом окне Windows Выполнить:
%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat"
Совет
Вам необходимо изменить путь в соответствии с расположением установки Visual Studio.
PowerShell для разработчиков
Найдите файл скрипта PowerShell с именем Launch-VsDevShell.ps1 или перейдите в папку «Инструменты» Visual Studio ( %ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\Common7\Tools). Путь зависит от версии, выпуска и расположения установки Visual Studio. После этого выполните следующую команду в командной строке Windows PowerShell или PowerShell 6:
& 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\Launch-VsDevShell.ps1'
По умолчанию PowerShell для разработчиков запускается с конфигурацией для той версии Visual Studio, путь установки к которой указан в файле Launch-VsDevShell.ps1.
См. также
Работа в командной строке Windows
Запуск командной строки
Наиболее часто встречающиеся рекомендации по запуску звучат так: Пуск, выполнить, cmd
. В меню пуск присутствует пункт Выполнить
. Он запускает программу, которая позволяет передавать единичные команды системе Windows. В данном случае команда cmd запускает исполняемый файл cmd.exe, находящийся в папке system32.
C:\WINDOWS\system32\cmd.exe
На некоторых версиях Windows пункт меню выполнить
по умолчанию убран. В этом случае жмёте + R, вводите cmd, далее Enter. Также можно запустить командную строку непосредственно из папки system32, сделав ярлык для запуска на рабочем столе (кликаем на cmd.exe правой клавишей мыши и в меню выбираем пункт Отправить/Рабочий стол
) или же через диспетчер задач (кнопка новая задача
— cmd).
По умолчанию в командной строке нельзя работать мышью (перемещать курсор или выделять текст). Это неудобно вообще и новичкам в особенности. К тому же чёрный экран выглядит как-то слишком мрачно и уныло. Поэтому после запуска командной строки
нужно будет изменить её настройки. Жмём правой клавишей на окне cmd и выбираем умолчания
. Стоит сразу отметить, что настройки умолчаний относятся к cmd.exe в целом, а свойства
— к конкретному открытому окну.
В появившемся окне свойств командной строки видим четыре вкладки:
На вкладке Параметры
стоит отметить пункты отбрасывать повторения
(чтобы снизить заполнение буфера команд) и выделение мышью
(чтобы можно было использовать мышь в работе).
На вкладках Шрифты
и Цвета
всё просто: выбираете размер, тип и цвет шрифта, а также фоновый цвет окна. Отмечу только, что размер шрифта влияет на размеры окна командной строки, поэтому его надо выставлять до размеров окна, а не после.
Во вкладке Расположение
задаются размеры окна и его начальное расположение при запуске. Я так до конца и не понял в каких единицах представлены величины, поэтому размер советую выставлять, руководствуясь окном предпросмотра слева.
Стоит отметить, что размер буфера влияет на вместимость окна, т.е. на количество информации, которое без проблем можно будет просмотреть после вывода на экран результатов выполнения команды (горизонтальная и вертикальная полосы прокрутки). Если задать равные размеры для окна и буфера, то в окне будет отображаться только хвост
выводимой информации, который туда вместится.
Также если строка не впишется в ширину окна это приведёт к её переносу. Воспринимать представленную таким образом информацию менее удобно. Поэтому буфер я ставлю всегда намного больше размеров окна. Это позволяет просмотреть большие объёмы информации, воспользовавшись полосами прокрутки справа и снизу. Картинка ниже кликабельна. На превью показано начало вывода команды dir для папки system32, а нажав на превью можно увидеть хвост
вывода (обратите внимание на полосу прокрутки справа — данных очень много).
Команды командной строки
Консоль настроена, теперь осталось ознакомить вас с командами командной строки. Для вывода их полного списка достаточно набрать команду help.
help - вывод справки по командам
help CD или CD /? - вывод справки по одной команде (для команды CD)
cd - переход в корневой каталог
cd .. - переход в родительский каталог
D: - переход на диск D.
dir - вывод всего содержимого папки
dir *.exe - вывод списка exe-файлов папки
cls - очистить экран командной строки
Командная строка запоминает команды, которые вы вводите. Листать их можно клавишами ⇑ и ⇓. Можно просматривать содержимое папки при помощи клавиши Tab (Shift+Tab листает в обратном порядке). Можно пролистать файлы на конкретную букву или буквы. Например, напечатав букву s и нажимая Tab, можно пролистать только файлы и папки, начинающиеся на эту букву (system, system32, system.ini и т.д.) . Как это можно использовать:
Например, вам надо перейти из корня диска C в папку system32, найти и запустить в ней контрольную панель. Можно просто напечатать:
C:\windows\system32\control.exe
Но это не всегда быстро и удобно, к тому же не всегда знаешь – что конкретно надо набирать. Поэтому можно набрать команду cd, затем после пробела набрать wi, пролистать клавишей Tab до папки Windows, поставить после неё слэш, набрать буквы sy, пролистать клавишей Tab до папки system32, затем опять слэш и то же самое с control.exe.
C: cd windows\system32\control.exe
Этот способ с табом куда быстрее в большинстве случаев, чем простой набор, так как названия файлов и папок могут быть длинными.
При включении поддержки мыши копировать информацию из командной строки можно выделив участок текста мышью и нажав Enter. Правая клавиша мыши, напротив, вставляет информацию из буфера обмена в командную строку.
В заключение статьи скажу, что cmd.exe — это просто программа ввода-вывода, такая же, как и блокнот. Разумеется, есть более продвинутые аналоги, которыми тоже можно пользоваться. Одна из таких программ — Console Portable
Кстати, в операционной системе GNU Linux командную строку можно вызывать прямо из папки. При этом строка откроется сразу с адресом папки и его не надо будет набивать вручную. В Windows для того, чтобы открыть командную строку непосредственно в папке, необходимо, зажав Shift, нажать правую клавишу мыши и выбрать в меню пункт «Открыть окно команд».
Также можно добавить эту возможность (и целый ряд других) с помощью программы расширения контекстного меню FileMenu Tools:
Если материалы сайта оказались для вас полезными, можете поддержать дальнейшее развитие ресурса, оказав ему (и мне ) моральную и материальную поддержку.
Как открыть, копировать или удалить файл через командную строку
Помощь командной строки незаменима при сбоях в работе компьютера. Начало получения навыков обычно связано с работой, как открыть, копировать, выполнять запуск, удалить файл. Как будет выглядеть алгоритм действий при каждом из составляющих работы, вы сможете увидеть ниже. Начнём с вопроса, как открыть файл через командную строку, затем покажем, как запустить программы, удалить их, копировать фрагмент текста. С этими задачами справится новичок, однако давно работающим с компьютером полезно вспомнить либо изучить эти варианты проведения обычных процессов.
В командной строке Windows можно полноценно работать с файлами.
Открываем файлы
Иногда через Менеджер, Проводник не получается открыть файлы, тогда поможет вам командная строка. Необходимо будет лишь запомнить несколько команд.
Итак, вы запустили программу, хотите открыть один из документов. Следуйте такому алгоритму.
- Найдите каталог, где расположен ваш файл. При запуске вы находитесь в диске C, в каталоге Windows/system
- Команда, позволяющая просмотреть, что входит в каталог — dir. Для постраничного просмотра добавляют «/p». После подтверждения вами выполнения команд, откроется список, где отразится содержимое папки.
- Чтобы перейти на следующую страницу, следует нажать Enter.
- Если необходимо, чтобы отразились в списке только подкаталоги, в команду добавляется ключ «/ad», для отображения исключительно файлов — «/b».
- Чтобы перейти в другую папку, вписываете в строку cd и путь к папке. Например, запись может выглядеть так: «cd C:\Windows». Значит, вы шагнёте из system32, где оказались по умолчанию, в папку Windows, перейдя тем самым назад на один уровень.
- Зайдя в нужный каталог, вписываем имя. Откроется документ в программе, в которой должен открыться по умолчанию.
В последующем, запомнив путь, чтобы выполнить запуск, не нужно будет проходить в каталог, достаточно сразу в строке вписать полный путь.
СОВЕТ. Для быстроты работы существуют bat-файлы, в них заранее вписывают команды, нужные, часто набираемые. Затем запускается этот файл, а он откроет нужную программу.
Запуск, закрытие программ
Рассмотрим, как запустить файл с командной строки, ежели он является программным. Здесь будет иметь значение, входит ли приложение в пакет Windows или вам понадобилось стороннее приложение. Если открываемое приложение является частью компонентов Windows, запуск производится вписыванием в консоль его имени, затем нажимаете Enter. Не требуется указывать расширение. Допустим, вам потребовался запуск «Блокнота», значит, просто наберите слово notepad, нажав затем Enter.
Если программа является сторонней, следует вписать полный путь к ней. Например, вам понадобился запуск архиватора WinRAR, значит, вы вписываете следующее:
C:\Program Files\ WinRAR \ WinRAR.exe
Путь записывайте в кавычках, если в адресе к нему имеются пробелы. Кавычки при этом нужны прямые — не в виде запятых. При неправильных кавычках программа не откроется. Кавычки не надо копировать, их впечатываете непосредственно в командную строку, без применения буфера обмена. На английской раскладке нужные кавычки находятся в сочетании клавиш Shift + Э.
СОВЕТ. Если зайдёте в каталог с программой, полный путь к ней прописывать не нужно. Достаточно просто ввести название файла с расширением. Например, зайдя в директорию WinRAR, вписываете команду WinRAR.exe — произведётся запуск программы.
Для закрытия приложений применяют программу taskkill. Вначале наберите tasklist, для вашего просмотра выйдет список процессов. Впишите номер индикатора в команде, например «taskkill /pid 3900/f», для подтверждения нажмите Enter. 3900 — это номер идентификатора.
Поиск по расширению
Командная строка поможет найти нужный файл по его расширению, если не помните его точного названия. Чтобы найти файл через командную строку, нужно запомнить применяемую в таком случае команду. Набираете dir и нужное вам расширение через звёздочку. Допустим, ищите один из экзешников, значит, набираете:
dir *.exe
На экран будут выведены все файлы с данным расширением, вам останется найти среди них нужный. Если поиск требуется вести в подкаталогах, добавьте ключ «/S». Полная команда для поиска файла в диске C, включая поиск в подкаталогах, будет выглядеть так:
dir C:*.exe /S
Удаление
Удалить ненужные системные файлы также можно посредством рассматриваемой программы. Удалить файл через командную строку несложно. Для удаления применяется команда del. После неё прописывается путь к искомому документу. Например, желаете удалить 123.txt. Вписываете следующее: «del C:\Windows\123.txt».
ВАЖНО. Для полного очищения какой-либо папки применяется атрибут «/S». Сможете удалить с таким ключом любые вложенные каталоги, все данные.
Копирование текста
OS Windows, заботясь об убыстрении, облегчении работы на ПК, создала горячие клавиши — комбинации, позволяющие быстро копировать текст, вставить его в другой файл. Это сочетания Ctrl+V или Shift+Insert.
В командной строке это не работает. Чтобы копировать информацию в ней, нужно вначале её настроить.
- Нажмите сочетание «Alt + Space (пробел) + Q». Откроется окошко со свойствами командной строки.
- Пройдите на вкладку «Общие», в группу «Редактирование», отметьте пункт «Быстрая вставка». А также нужно активировать «Выделение мышью».
- Нажав ОК для подтверждения действий, увидите несколько вариантов подобной функции. Отметьте одно поле, нажмите ОК.
Теперь, чтобы копировать фрагмент текста из командной строки, выделите его мышкой, нажмите сочетание Ctrl+C.
Все эти навыки вам пригодятся, если не получается выполнить нужный процесс обычным путём из-за сбоев, неполадок в компьютере. Несложные действия, легко запоминающийся алгоритм, чёткие инструкции — всё помогает вам более профессионально решать поставленные вопросы. Нужно лишь запомнить перечень команд, соблюдать правила вписывания их (например, когда нужно проставлять кавычки и какие), чётко, безошибочно вписывать путь к требуемому файлу.
ВЫПОЛНИТЬ команду
Выполняет приложение или процесс вне Google Analytics. Эмулирует команду Windows «Выполнить». Может быть используется для взаимодействия с командной строкой Windows.
Примечание
Потому что команда EXECUTE дает вам возможность взаимодействовать с операционной системой и приложениями, не связанными с Google Analytics, могут возникнуть технические проблемы которые выходят за рамки встроенных функций Google Analytics.
Служба поддержки может помочь с выполнением команды EXECUTE внутри Google Analytics, но проблемы, возникающие с внешними процессами и приложениями to Analytics не подпадают под действие поддержки.
Синтаксис
ВЫПОЛНИТЬ Windows_Run_command_syntax
Параметры
Имя | Описание |
---|---|
Windows_Run_command_syntax | Имя исполняемого приложения, папка или файл для открытия, или команду для запуска, с последующими любыми обязательными аргументами или командные переключатели. Требуется действующая команда Windows Выполнить синтаксис заключен в кавычки. |
ASYNC опционально | Выполняет команду в асинхронном режиме. В асинхронном режиме, сценарий Analytics продолжает работать, не дожидаясь завершения процесса, запущенного командой EXECUTE. Если вы опустите ASYNC, то процесс, запущенный командой EXECUTE, должен завершиться до продолжения сценария Analytics. Аналитика недоступна, пока запущены внешние процессы. Примечание При запуске EXECUTE из командной строки Analytics вы необходимо указать ASYNC. |
Выходные переменные аналитики
Имя | Содержит |
---|---|
RETURN_CODE | Код, возвращаемый внешним приложением или процессом. запустить с помощью команды EXECUTE. Что такое коды возврата?Коды возврата представляют собой сгенерированные числа внешним приложением или процессом и отправлено обратно в Google Analytics на указать результат внешнего процесса. Аналитика не генерировать код возврата, он его только получает. Типичные коды возвратаТипичные коды возврата — целые числа значения, которые сопоставляются с конкретными уведомлениями или сообщениями об ошибках.Для Например, код возврата «0» может означать «Операция успешно завершена». Код возврата «2» может означать «Система не может найти указанный файл». Значение конкретных кодов возвратаОсобый коды возврата и их значение различаются в зависимости от внешнего приложения. или процесс. Списки кодов возврата, также называемые «кодами ошибок» или «коды выхода» и их значения часто можно найти в документации. для связанного внешнего приложения.Списки кодов возврата могут также можно найти в Интернете. Переменная создана только в режиме по умолчаниюПеременная RETURN_CODE: создается, когда команда EXECUTE запускается в режиме по умолчанию. Переменная не создается, когда Команда выполняется в асинхронном режиме. |
Примеры
Открыть приложение
Открывает Microsoft Excel:
ВЫПОЛНИТЬ «Excel»
Открывает Adobe Acrobat Reader:
EXECUTE "AcroRd32.exe "
Закройте приложение
Закрывает Microsoft Excel:
EXECUTE "TASKKILL / f / im Excel.exe "
Примечание
Использование используйте переключатель / f с осторожностью. Принудительно закрывает приложение без отображения каких-либо диалоговых окон, например, для сохранения изменений.
Открыть файл
Открывает книгу Excel AP_Trans.xlsx:
EXECUTE '"C: \ ACL Projects \ Source Data \ AP_Trans.xlsx"'
Создать новую папку
Создает новую папку с именем Source Data:
EXECUTE 'cmd / c MD "C: \ ACL Projects \ Source Data"'
Запуск внешних сценариев или командных файлов, не относящихся к Google Analytics (.летучая мышь)
Запускает сценарий My_Batch.bat:
EXECUTE '"C: \ ACL Projects \ Batch Files \ My_Batch.bat"'
Передача параметров в пакет, не относящийся к Google Analytics файл
Передает два параметра My_Batch.летучая мышь. Параметры могут быть литералами или переменными Analytics:
EXECUTE '"C: \ ACL Projects \ Batch Files \ My_Batch.bat" param1% v_param2%'
Запускать сценарии Analytics в других проектах Analytics
Выполняет «AP_Trans_script» в тестах AP Trans.acl «
EXECUTE 'aclwin.exe" C: \ ACL Projects \ AP Trans Tests.acl "/ b AP_Trans_script'
Примечание
Запуск аналитики скрипт в другом проекте запускает второй экземпляр Analytics. В сценарий во втором проекте должен заканчиваться командой QUIT, чтобы что второй экземпляр Google Analytics закрывается и управление возвращается начальный экземпляр Analytics.
Включить период ожидания в скрипт Google Analytics
Оба примера создают период ожидания в 30 секунд:
EXECUTE "TIMEOUT / t 30"
EXECUTE "cmd / c PING -n 31 127.0.0.1> нуль "
Замечания
Используйте EXECUTE для выполнения полезных задач
Команда EXECUTE позволяет запускать команды Windows и DOS из командной строки Analytics или из сценария Google Analytics.
Вы можете использовать эту способность для увеличения автоматизация скриптов аналитики за счет выполнения различных полезные задачи, которые невозможно выполнить с использованием синтаксиса ACLScript в одиночестве.
Примеры задач, которые можно запустить с помощью EXECUTE
Откройте другие программы и приложения и выполните задачи, необходимые для сценария аналитики | Передать параметры в командный файл | Доступ к данным из сетевых точек | Включить списки учетных записей Active Directory |
Открыть любой файл в приложении по умолчанию | Запускать скрипты Analytics в других проектах Analytics | Использовать FTP для доступа к данным из удаленных мест | Интеграция с VBScript |
Выполнять задачи администрирования файлов и папок, такие как копирование, перемещение, создание, удаление или сравнение существующих файлов или папок вне Analytics | Включить периоды ожидания в скрипты Google Analytics | Архивировать или разархивировать данные | Интеграция с базами данных SQL |
Запускать внешние скрипты или командные файлы, не относящиеся к Analytics (.летучая мышь) | Включение планирования задач Windows в сценарии Google Analytics | Шифровать или расшифровывать данные | Открытые веб-страницы |
Примечание Конкретные сведения о том, как выполнение любой из этих задач выходит за рамки справочной документации Galvanize.Для получения помощи обратитесь к соответствующей операционной системе Windows. системная документация или другая сторонняя документация. |
Режим по умолчанию и асинхронный режим
Вы можете запустить команду EXECUTE либо в режиме по умолчанию, либо в асинхронном режиме:
- Режим по умолчанию: процесс, запущенный EXECUTE, должен завершиться, прежде чем сценарий Google Analytics сможет продолжить работу.
Аналитика недоступна, пока запущены внешние процессы.
- В асинхронном режиме сценарий Analytics продолжает выполняться, не дожидаясь завершения процесса, запущенного EXECUTE.
Аналитика остается доступной во время выполнения внешних процессов.
Если вы укажете ASYNC, команда EXECUTE будет выполняться в асинхронном режиме.
Какой режим мне использовать?
При создании скриптов Google Analytics, использующих команду EXECUTE нужно учитывать, какой режим работы подходит.
Использовать режим по умолчанию | Использовать асинхронный режим / ASYNC |
---|---|
|
|
Сценарии аналитики, которые запускаются автоматически
Если вам нужен скрипт Google Analytics который содержит команду EXECUTE для автоматического запуска, используйте один из следующих методов:
- использовать асинхронный режим для любых задач, которые вызывают интерфейс приложения или всплывающее диалоговое окно для открытия
- избегать открытия элементов интерфейса в автоматических сценариях
Примечание
До элементы интерфейса закрыты, они представляют собой процессы, которые все еще Бег.Если эти элементы интерфейса открываются с помощью EXECUTE в режиме по умолчанию, они предотвращают последующие строки в сценарии Analytics от выполнения и вызывают зависание сценария.
Команда EXECUTE в аналитических скриптах
Если вы хотите использовать команду EXECUTE в аналитических сценариях в Robots или на сервере AX Server, вы должны специально настроить команду для запуска.Для получения дополнительной информации см .:
Кавычки
Синтаксис команды «Выполнить» в Windows которые вы используете с командой EXECUTE, должны быть заключены в один или двойные кавычки.
В следующем примере используется команда Windows MD. для создания новой папки:
EXECUTE 'cmd / c md C: \ New_Data_Folder'
Вложенные кавычки
Если любые пути в синтаксисе команды Run содержат пробелы, пути также должны быть заключены в кавычки.
У вас есть два варианта при заключении путей в кавычки:
- Двойные кавычки внутри одинарных кавычек Используйте
одинарные кавычки, чтобы заключить всю строку команды Run,
и используйте внутри двойные кавычки, чтобы заключить пути:
EXECUTE 'cmd / c md "C: \ New Data Folder"'
You этот метод может быть легче читать, чем второй метод.
Примечание
Реверс порядок вложения — заключить в двойные кавычки вся строка и одинарные кавычки, чтобы заключить пути — не работает.
- Две двойные кавычки Используйте двойные кавычки, чтобы заключить всю команду «Выполнить».
строка и используйте две двойные кавычки внутри, чтобы заключить
пути:
EXECUTE "cmd / c md" "C: \ New Data Folder" ""
Если вы используете этот второй метод, используются две двойные кавычки внутри должно быть непосредственно рядом и не может иметь места между ними.
Внутренние и внешние команды
Команды Windows может быть внутренним или внешним .
- Внутренние команды можно запускать только из командной строки, что означает, что у вас есть открыть командную оболочку с помощью cmd / c или cmd / k перед указанием команды.
- Внешние команды могут запускаться либо из командной строки, либо напрямую с помощью EXECUTE command, что означает, что открытие командной оболочки — это вариант, но не требуется.
В приведенном ниже примере используется внутренняя команда Windows DIR. (отображает содержимое каталога), а внешняя команда Windows COMP (сравнивает два файла), чтобы проиллюстрировать разницу:
EXECUTE 'cmd / k dir "C: \ ACL DATA \ Sample Data Files"' ВЫПОЛНИТЬ 'comp C: \ File_1.txt C: \ File_2.txt '
Можно Избегайте этого осложнения, создавая внешние скрипты или командные файлы. чтобы содержать команды Windows, и используя только команду EXECUTE чтобы запустить командный файл. Например:
EXECUTE 'C: \ My_Batch.bat'
Синтаксис многострочной команды Run
Команда EXECUTE не поддерживает синтаксис многострочной команды Run.Включить многострочную Запускайте команды в сценарии аналитики, используйте один из следующих методов:
Метод | Пример |
---|---|
Повторите команду EXECUTE для каждой команды Run. | EXECUTE 'cmd / c md "C: \ New Data Folder"' ВЫПОЛНИТЬ 'cmd / c copy C: \ File_1.txt "C: \ New Data Folder" ' |
Объедините команды «Пуск» с помощью символа «&». | ВЫПОЛНИТЬ 'cmd / c md «C: \ New Data Folder» и скопировать C: \ File_1.txt «C: \ New Data Folder»' |
Создайте внешний сценарий или командный файл, содержащий многострочный Запускайте команды и используйте команду EXECUTE только для запуска пакета файл. | ВЫПОЛНИТЬ 'C: \ My_Batch.bat' |
Как выполнить команду в сценарии оболочки?
Shell — это интерпретатор командной строки, который позволяет пользователю взаимодействовать с системой. Он отвечает за ввод данных от пользователя и отображение вывода.
Сценарии оболочки — это серия команд, написанных в порядке выполнения. Эти скрипты могут содержать функции, циклы, команды, переменные. Сценарии позволяют пользователям легко сохранять определенные последовательности кодов, которые можно использовать снова и снова. Сценарии оболочки также могут иметь комментарии для повышения удобочитаемости.
Сценарий оболочки необходимо сохранить с расширением .sh .
Чтобы система Linux знала, что файл является сценарием оболочки, файл должен начинаться с конструкции shebang .
После этого сценарий может содержать команды, функции, циклы, условные проверки и т. Д.
Хороший сценарий всегда содержит комментарии, которые делают его читабельным.
Создание и запуск базового сценария оболочки
Сценарий оболочки можно создать с помощью vi, команды cat или обычного текстового редактора в графическом интерфейсе пользователя.
Давайте создадим базовый сценарий оболочки с использованием vi
Это приведет вас к редактору vi. Добавьте следующие строки:
Этот простой сценарий должен отображать текущего пользователя, за которым следует дата.
Чтобы сохранить и выйти из редактора vi:
- Нажмите ESC
- Введите:
- Введите «wq»
- Нажмите Введите
По умолчанию создатель сценария не получает разрешения на выполнение файла.
Чтобы изменить это:
$ chmod + x basic_script.sh
Это даст вам (текущему пользователю) разрешение на выполнение файла.
Для запуска сценария:
Первая строка вывода соответствует команде «whoami», а вторая строка — команде «date».
Другой способ запуска сценария:
Для запуска файла таким образом может потребоваться, чтобы пользователь сначала дал разрешение. Для запуска с помощью «bash» разрешение не требуется.
Тот же сценарий выполняется с ‘bash’ перед ним, но при попытке выполнить напрямую возникают проблемы с правами доступа. Причина этого в том, что команде bash [имя файла] требуется только разрешение на чтение из файла.
В то время как команда ./[filename] запускает файл как исполняемый файл и, следовательно, требует разрешения на выполнение.На этот вопрос был дан подробный ответ на StackExchange.
В общем случае лучше предоставить доступ к исполняемым файлам.
Использование переменных в сценариях оболочки
Сценарии могут включать в себя определяемые пользователем переменные. Фактически, поскольку сценарии становятся объемными по размеру, важно иметь четко определенные переменные. Переменные, которые по своей природе информативны, — еще одно качество хорошего скрипта.
Добавьте в скрипт следующие строки:
#! / bin / bash # Это комментарий # определение переменной GREETINGS = "Привет! Как дела" echo $ ПРИВЕТСТВИЯ
ПРИВЕТСТВИЕ — это переменная, определенная и позже доступная с помощью «$».
В строке, где переменным присваивается значение, не должно быть места.
Давайте запустим сценарий:
Чтение ввода из командной строки
Сценарии оболочки можно сделать интерактивными с возможностью принимать ввод из командной строки. Команду чтения можно использовать для сохранения ввода командной строки в переменной.
#! / bin / bash # Это комментарий # определение переменной echo "Как тебя зовут?" #reading input читать ИМЯ # определение переменной GREETINGS = "Привет! Как дела" echo $ NAME $ ПРИВЕТСТВИЕ
Переменная NAME использовалась для приема ввода из командной строки.
При запуске сценария:
Определение функций
Пользователи могут определять свои собственные функции в сценарии. Эти функции могут принимать несколько аргументов.
В скрипте добавить:
#! / bin / bash # Это комментарий # определение переменной echo "Как называется каталог, который вы хотите создать?" #reading input читать ИМЯ # определение переменной echo "Создание $ NAME ..." mkcd () { mkdir "$ NAME" cd "$ NAME" } mkcd echo "Теперь вы в $ NAME"
Этот сценарий запросит у пользователя имя каталога.Затем он создаст каталог и войдет в него.
Заключение
Мы увидели, как сценарии могут использоваться для последовательного выполнения команд. Сценарии помогают пользователям уменьшить избыточность и сэкономить время. Скрипты также могут использоваться разными пользователями.
Сценарии, которые мы видели в этом руководстве, были довольно простыми, сценарии также могут быть разработаны для выполнения сложных задач. Чтобы узнать больше о сценариях, обратитесь к этому.
Команда exec в Linux с примерами
Команда exec в Linux используется для выполнения команды из самого bash.Эта команда не создает новый процесс, она просто заменяет bash командой, которую нужно выполнить. Если команда exec выполнена успешно, она не возвращается к вызывающему процессу.
Синтаксис:
exec [-cl] [-a имя] [команда [аргументы]] [перенаправление ...]
Опции:
- c: Используется для выполнения команды с пустой средой.
- имя: Используется для передачи имени в качестве нулевого аргумента команды.
- l: Используется для передачи тире в качестве нулевого аргумента команды.
Примечание. Команда exec не создает новый процесс. Когда мы запускаем команду exec из терминала, текущий процесс терминала заменяется командой, которая предоставляется в качестве аргумента для команды exec.
Команда exec может использоваться в двух режимах:
- Exec с командой в качестве аргумента: В первом режиме exec пытается выполнить ее как команду, передавая оставшиеся аргументы, если есть, в эту команду и управление перенаправлениями, если таковые имеются.
Пример 1:
Пример 2:
Команда exec ищет путь, указанный в переменной $ PATH , чтобы найти команду для выполнения. Если команда не найдена, команда exec и оболочка завершаются с ошибкой.
- Exec без команды: Если команда не указана, перенаправления можно использовать для изменения текущей среды оболочки. Это полезно, поскольку позволяет нам изменять файловые дескрипторы оболочки по нашему желанию.В отличие от предыдущего случая процесс продолжается даже после команды exec, но теперь стандартный ввод, вывод и ошибка изменяются в соответствии с перенаправлениями.
Пример:
Здесь команда exec изменяет стандарт из оболочки на файл tmp, и поэтому все команды, выполняемые после команды exec, записывают свои результаты в этот файл. Это один из наиболее распространенных способов использования exec без каких-либо команд.
Выполнение команд оболочки с помощью Python
Введение
Повторяющиеся задачи созрели для автоматизации.Разработчики и системные администраторы обычно автоматизируют рутинные задачи, такие как проверки работоспособности и резервное копирование файлов, с помощью сценариев оболочки. Однако по мере того, как эти задачи становятся более сложными, сценарии оболочки становится труднее поддерживать.
К счастью, мы можем использовать Python вместо сценариев оболочки для автоматизации. Python предоставляет методы для запуска команд оболочки, предоставляя нам те же функции, что и сценарии оболочки. Изучение того, как запускать команды оболочки в Python, открывает нам возможность автоматизировать компьютерные задачи структурированным и масштабируемым образом.
В этой статье мы рассмотрим различные способы выполнения команд оболочки в Python и идеальную ситуацию для использования каждого метода.
Использование os.system для выполнения команды
Python позволяет нам немедленно выполнить команду оболочки, которая хранится в строке, с помощью функции os.system ()
.
Давайте начнем с создания нового файла Python с именем echo_adelle.py
и введем следующее:
импорт ОС
os.system ("эхо привет с другой стороны!")
Первое, что мы делаем в нашем файле Python, — это импортируем модуль os
, который содержит функцию system
, которая может выполнять команды оболочки.Следующая строка делает именно это, запускает команду echo
в нашей оболочке через Python.
Запустите этот файл в своем терминале с помощью следующей команды, и вы должны увидеть соответствующий результат:
$ python3 echo_adelle.py
Привет с другой стороны!
Поскольку команда echo
выводит на наш stdout
, os.system ()
также отображает вывод в нашем потоке stdout
. В консоли os.Команда system ()
возвращает код выхода команды оболочки. Код выхода 0 означает, что он работал без проблем, а любое другое число означает ошибку.
Создайте новый файл с именем cd_return_codes.py
и введите следующее:
импорт ОС
home_dir = os.system ("cd ~")
print ("` cd ~ `запущен с кодом выхода% d"% home_dir)
unknown_dir = os.system ("cd doesnotexist")
print ("` cd doesnotexis` запущен с кодом выхода% d "% unknown_dir)
В этом сценарии мы создаем две переменные, в которых хранится результат выполнения команд, которые изменяют каталог на домашнюю папку и на несуществующую папку.Запустив этот файл, мы увидим:
$ python3 cd_return_codes.py
`cd ~` запустился с кодом выхода 0
sh: строка 0: cd: doesnotexist: нет такого файла или каталога
cd doesnotexist запустился с кодом выхода 256
Первая команда, которая изменяет каталог на домашний каталог, выполняется успешно. Следовательно, os.system ()
возвращает свой код выхода, ноль, который хранится в home_dir
. С другой стороны, unknown_dir
хранит код выхода неудачной команды bash для изменения каталога на несуществующую папку.
Функция os.system ()
выполняет команду, выводит любой вывод команды на консоль и возвращает код выхода команды. Если мы хотим более детального управления вводом и выводом команд оболочки в Python, мы должны использовать модуль subprocess
.
Выполнение команды с подпроцессом
Модуль подпроцесса — это рекомендуемый Python способ выполнения команд оболочки. Это дает нам гибкость для подавления вывода команд оболочки или цепочки входов и выходов различных команд вместе, при этом обеспечивая аналогичный опыт с ОС .system ()
для основных случаев использования.
В новом поле под названием list_subprocess.py
напишите следующий код:
импорт подпроцесса
list_files = subprocess.run (["ls", "-l"])
print ("Код выхода был:% d"% list_files.returncode)
В первой строке мы импортируем модуль подпроцесса
, который является частью стандартной библиотеки Python. Затем мы используем функцию subprocess.run ()
для выполнения команды. Подобно os.system ()
, подпроцесс .Команда run ()
возвращает код выхода того, что было выполнено.
В отличие от os.system ()
, обратите внимание, что subprocess.run ()
требует ввода списка строк вместо одной строки. Первый элемент списка — это имя команды. Остальные элементы списка — это флаги и аргументы команды.
Примечание: Как правило, вам необходимо разделить аргументы на основе пробела, например, ls -alh
будет ["ls", "-alh"]
, а ls -a -l -h
, будет ["ls", "-a", - "l", "-h"]
.В качестве другого примера, echo hello world
будет ["echo", "hello", "world"]
, тогда как echo "hello world"
или echo hello \ world
будет ["echo", «привет, мир»]
.
Запустите этот файл, и вывод вашей консоли будет примерно таким:
$ python3 list_subprocess.py
всего 80
[электронная почта защищена] 1 сотрудник stackabuse 216 6 дек., 10:29 cd_return_codes.py
[электронная почта защищена] 1 сотрудник stackabuse 56 дек 6, 10:11 echo_adelle.ру
[электронная почта защищена] 1 сотрудник stackabuse 116 6 декабря, 11:20 list_subprocess.py
Код выхода: 0
Теперь давайте попробуем использовать одну из более продвинутых функций subprocess.run ()
, а именно игнорировать вывод на stdout
. В том же файле list_subprocess.py
измените:
list_files = subprocess.run (["ls", "-l"])
Кому:
Ознакомьтесь с нашим практическим практическим руководством по изучению Git с лучшими практиками, общепринятыми стандартами и включенной шпаргалкой.Прекратите поиск в Google команд Git и фактически выучите !
list_files = subprocess.run (["ls", "-l"], stdout = subprocess.DEVNULL)
Стандартный вывод команды теперь направляется на специальное устройство / dev / null
, что означает, что вывод не будет отображаться на наших консолях. Запустите файл в своей оболочке, чтобы увидеть следующий результат:
$ python3 list_subprocess.py
Код выхода: 0
Что, если бы мы хотели предоставить ввод для команды? Подпроцесс .run ()
облегчает это своим аргументом input
. Создайте новый файл с именем cat_subprocess.py
, набрав следующее:
импорт подпроцесса
useless_cat_call = subprocess.run (["кот"], stdout = subprocess.PIPE, text = True, input = "Привет с другой стороны")
печать (бесполезный_cat_call.stdout)
Мы используем subprocess.run ()
с довольно большим количеством команд, давайте рассмотрим их:
-
stdout = subprocess.PIPE
указывает Python перенаправить вывод команды на объект, чтобы его можно было вручную прочитать позже -
text = True
возвращаетstdout
иstderr
в виде строк.Тип возвращаемого значения по умолчанию — байты. -
input = "Привет с другой стороны"
сообщает Python, что нужно добавить строку в качестве входных данных для командыcat
.
Запуск этого файла дает следующий результат:
Привет с другой стороны
Мы также можем вызвать исключение
без ручной проверки возвращаемого значения. В новом файле false_subprocess.py
добавьте следующий код:
импорт подпроцесса
failed_command = подпроцесс.run (["false"], check = True)
print ("Код выхода был:% d"% failed_command.returncode)
Запустите этот файл в своем терминале. Вы увидите следующую ошибку:
$ python3 false_subprocess.py
Отслеживание (последний вызов последний):
Файл "false_subprocess.py", строка 4, в
failed_command = subprocess.run (["false"], check = True)
Файл "/usr/local/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/subprocess.py", строка 512, в процессе
вывод = stdout, stderr = stderr)
подпроцесс.CalledProcessError: команда '[' false ']' вернула ненулевой статус выхода 1.
Используя значение check = True
, мы сообщаем Python, что нужно создавать исключения в случае обнаружения ошибки. Поскольку мы столкнулись с ошибкой, оператор print
в последней строке не был выполнен.
Функция subprocess.run ()
дает нам огромную гибкость, которой не обладает os.system ()
при выполнении команд оболочки. Эта функция является упрощенной абстракцией подпроцесса .Popen
, который предоставляет дополнительные возможности, которые мы можем изучить.
Выполнение команды с помощью Popen
Класс subprocess.Popen
предоставляет разработчику дополнительные возможности при взаимодействии с оболочкой. Однако нам нужно более подробно описывать получение результатов и ошибок.
По умолчанию subprocess.Popen
не останавливает обработку программы Python, если ее команда не завершила выполнение. В новом файле с именем list_popen.py
, введите следующее:
импорт подпроцесса
list_dir = subprocess.Popen (["ls", "-l"])
list_dir.wait ()
Этот код эквивалентен list_subprocess.py
. Он запускает команду, используя подпроцесс .Popen
, и ожидает ее завершения перед выполнением остальной части скрипта Python.
Допустим, мы не хотим ждать, пока наша команда оболочки завершит выполнение, чтобы программа могла работать над другими вещами. Как он узнает, когда команда оболочки завершила выполнение?
Метод poll ()
возвращает код выхода, если команда завершена, или Нет
, если она все еще выполняется.Например, если бы мы хотели проверить, завершен ли список list_dir
, вместо того, чтобы ждать его, у нас была бы следующая строка кода:
list_dir.poll ()
Для управления вводом и выводом с помощью подпроцесса .Popen
нам нужно использовать метод communication ()
.
В новый файл с именем cat_popen.py
добавьте следующий фрагмент кода:
импорт подпроцесса
useless_cat_call = subprocess.Popen (["кошка"], stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE, text = True)
вывод, errors = useless_cat_call.communicate (input = "Привет с другой стороны!")
useless_cat_call.wait ()
печать (вывод)
печать (ошибки)
Метод communication ()
принимает входной аргумент
, который используется для передачи входных данных команде оболочки. Метод сообщения
также возвращает как стандартный вывод ,
, так и стандартный вывод
, если они установлены.
Ознакомившись с основными идеями подпроцесса .Popen
, мы рассмотрели три способа запуска команд оболочки в Python. Давайте еще раз рассмотрим их характеристики, чтобы узнать, какой метод лучше всего подходит для требований проекта.
Какой из них использовать?
Если вам нужно выполнить одну или несколько простых команд и вы не возражаете, если их вывод пойдет на консоль, вы можете использовать команду os.system ()
. Если вы хотите управлять вводом и выводом команды оболочки, используйте subprocess.run ()
. Если вы хотите запустить команду и продолжить выполнение другой работы во время ее выполнения, используйте подпроцесс .Popen
.
Вот таблица с некоторыми различиями в удобстве использования, которую вы также можете использовать для обоснования своего решения:
система os. | subprocess.run | subprocess.Popen | |
---|---|---|---|
Требуются проанализированные аргументы | № | да | да |
Ожидает команды | да | да | № |
Обменивается данными со стандартным вводом и выводом | № | да | да |
Возврат | возвращаемое значение | объект | объект |
Заключение
Python позволяет выполнять команды оболочки, которые можно использовать для запуска других программ или лучшего управления сценариями оболочки, которые вы используете для автоматизации.В зависимости от нашего варианта использования мы можем использовать os.system ()
, subprocess.run ()
или subprocess.Popen
для запуска команд bash.
Используя эти методы, какую внешнюю задачу вы бы запустили через Python?
Как запустить сценарий — Windows CMD
Как запустить сценарий — Windows CMD — SS64.comЧтобы подготовить новый пакетный сценарий, сохраните файл как обычный текст ASCII с расширением файла .CMD
Также возможно запускать пакетные сценарии с расширением.BAT, но это не рекомендуется, если вам не нужна совместимость с Windows 95 (файлы .BAT будут устанавливать ERRORLEVEL в соответствии с несовместимыми правилами стиля MS-DOS).
Запустить командный файл
Пакетный файл можно запустить, дважды щелкнув его в проводнике Windows или введя имя / путь в командной строке, при необходимости передав любые необходимые параметры.
Из меню «Пуск»: ПУСК> ВЫПОЛНИТЬ c: \ path_to_scripts \ my_script.cmd, ОК
Если имя файла включает пробелы, вам нужно будет заключить команду в кавычки:
«c: \ путь к скриптам \ мой скрипт.cmd «
Откройте новое приглашение CMD, выбрав START> RUN cmd, OK
В командной строке введите имя сценария и нажмите клавишу возврата.
C: \ Batch> Demo.cmd
или
C: \ Batch> c: \ path_to_scripts \ my_script.cmd параметр1 параметр2Это можно упростить, создав ярлык для меню «Пуск» или панели задач.
Чтобы запустить пакетный файл из другого пакетного файла, используйте команду CALL, в противном случае первый сценарий запустит второй сценарий и немедленно завершится, поэтому дальнейшие команды в первом сценарии выполняться не будут.
Просмотр командной строки запуска
Переменная среды% CmdCmdLine% будет расширена до исходной командная строка передана в CMD.EXE
При запуске командного файла из командной строки% CmdCmdLine% вернет:
C: \ WINDOWS \ system32 \ cmd.exe param1Когда командный файл запускается двойным щелчком в проводнике Windows или ПУСК> ВЫПОЛНИТЬ,% CMDCMDLINE% вернет:
C: \ WINDOWS \ system32 \ cmd.exe / c «» C: \ demo \ batch.cmd param1Для определения режима запуска можно использовать / c:
Echo% CmdCmdLine% | findstr / c: «/ c»> nul && Echo Запускается двойным щелчком.
Запустить сценарий PowerShell
Для запуска сценария PowerShell из оболочки CMD:
C: \> powershell -file "c: \ batch \ demo.ps1"С аргументами:
C: \> powershell -file "c: \ batch \ demo.ps1 "filename1.txt ТестированиеЕсли аргументы нуждаются в кавычках, вам нужно утроить их, чтобы они были экранированы:
C: \> powershell -file "c: \ batch \ demo.ps1" "" "\ Path To \ filename1.txt" "" "" "Тестовая строка" ""При вызове PowerShell из CMD имейте в виду, что запятая является разделителем CMD, это делает невозможным передачу массива значений, разделенных запятыми, в PowerShell. item1, item2, item3 обрабатываются так же, как item1 item2 item3
Запустить файл VBScript
Для запуска VBScript из оболочки CMD:
C: \> cscript c: \ batch \ demo.vbs
«Метод предприимчивости — смело планировать и энергично выполнять» ~ Джон Кристиан Бови
Связанные команды:
START — Запуск программы, команды или командного файла.
Команды RUN Пуск | Выполните команды.
Практическое руководство: запуск сценария из PowerShell
Практическое руководство: запуск сценария из VBScript
Авторские права © 1999-2021 SS64.com
Некоторые права защищены
4.3. Выполнение нескольких команд в последовательности
Вам нужно выполнить несколько команд, но некоторые требуют времени, и вы не хотите ждать. для завершения последнего перед выдачей следующей команды.
Есть три решения этой проблемы, но первое — довольно тривиально: просто продолжайте печатать. Система Linux или Unix является продвинутой достаточно, чтобы позволить вам печатать, пока он работает с вашим предыдущим команд, так что вы можете просто продолжать вводить одну команду после Другая.
Еще одно довольно простое решение — ввести эти команды в файл, а затем скажите bash выполнить команды в файл, то есть простой сценарий оболочки.
Предположим, что мы хотим запустить три команды: long, средний и короткий , каждый из которых время исполнения отражено в его названии. Нам нужно запустить их в этом заказ, но не хочу ждать, пока long , чтобы закончить перед запуском других команд.D # Ctrl-D, не отображается $ bash ./simple.script
Третье и, возможно, лучшее решение — запускать каждую команду в последовательность. Если вы хотите запускать каждую программу, независимо от того, одни терпят неудачу, разделите их точкой с запятой:
$ long; Средняя ; short
Если вы хотите запустить следующую программу только в том случае, если предыдущая программа работала, и все программы правильно установите коды выхода, разделите их двойными амперсандами:
$ long && medium && short
Пример cat был просто очень примитивным способом ввода текста в файл.Мы перенаправляем вывод команды в файл с именем simple.script (подробнее о перенаправлении вывода см.
Глава 3). Лучше использовать настоящий редактор,
но такие вещи сложнее показать на подобных примерах. Впредь,
когда мы хотим показать сценарий, мы просто показываем текст как
бестелесный текст не в командной строке, или мы начнем пример
с помощью команды типа cat filename
to
выводить содержимое файла на экран (а не перенаправлять
вывод из нашего ввода в файл), и, таким образом, отобразить его в
пример.
Суть этого простого решения — продемонстрировать, что больше чем одна команда может быть помещена в команду bash линия. В первом случае вторая команда не запускается до первой команда завершается, а третья не выполняется, пока не завершится вторая и и так далее, для того количества команд, которое у вас есть в строке. Во втором случае вторая команда не запускается, пока первая команда не завершится успешно, а третий не выполняется, пока второй не будет успешным, и так далее, для стольких команды, как у вас на линии.
Запуск сценариев оболочки из Bash
Выполнение команд из скрипта
По мере того, как мы переходим к более сложным вычислительным задачам, команды будут слишком многочисленными и подробными, чтобы вводить их вручную и выполнять построчно — помните, что после того, как вы нажмете , введите , вы не сможете вернуться назад в интерактивном режиме. незамедлительный.
Итак, здесь мы изучаем новую технику: написание сценариев оболочки. Вместо того, чтобы вводить серию команд в интерпретатор командной строки, мы вводим их в текстовый файл .Затем мы сохраняем этот текстовый файл. Затем мы говорим bash выполнить команды из этого текстового файла. который мы называем скриптом .
Представьте, что файл my_script.sh
содержит следующие команды:
эхо "Привет!"
echo "Меня зовут $ (whoami)"
echo "Приятно познакомиться"
Выполнение этого сценария включает вызов программы bash в командной строке и присвоение ей имени сценария my_script.ш
пользователь @ хост: ~ $ bash my_script.sh
Привет
Меня зовут Дун
Рад встрече
Использование текстового редактора nano для создания текстового файла
Краткий переход здесь : Мы можем (и иногда делаем) создавать быстрые текстовые файлы из командной строки. Чтобы создать вышеупомянутый my_script.sh
, например:
user @ host: ~ $ echo 'echo "Привет!"'> My_script.sh
user @ host: ~ $ echo 'echo "Меня зовут $ (whoami)"' >> my_script.ш
user @ host: ~ $ echo 'echo "Приятно познакомиться"' >> my_script.sh
Это выглядело некрасиво и неловко? Это потому, что — это . И он подвержен всем проблемам, которые у вас были раньше, когда одна опечатка в предыдущей строке заставит вас начать все сначала.
Открытие нано
Чтобы открыть nano , просто введите nano в командной строке:
пользователь @ хост: ~ $ nano
Однако мне нравится передавать имя файла, который я собираюсь создать.По умолчанию nano выберет этот аргумент в качестве имени файла для сохранения. Если это имя файла уже существует, nano повторно откроет файл для редактирования.
пользователь @ хост: ~ $ nano myfile.txt
В любом случае, nano — это обслуживаемый текстовый редактор. Конечно, это будет казаться примитивным по сравнению со всем, что вы использовали с тех пор, как, например, Apple] [… но это значительно удобнее и снисходительнее, чем подсказка. Например, вы можете перемещаться вверх и вниз по ранее введенным строкам текста.
Когда вы закончите вводить команды (или что угодно, в конце концов, это всего лишь текстовый редактор), нажмите Ctrl-X для выхода. Затем nano спросит вас самым запутанным способом, хотите ли вы, чтобы сохранил свои изменения . Введите y
, после чего появится запрос nano
, чтобы указать имя файла. Нажмите Enter, и вы вернетесь к подсказке.
Вот анимированный GIF-файл, на котором я создаю сценарий, вводя nano , записывая команды, сохраняя их и затем выполняя из командной строки:
Создание многоразовых скриптов
Если my_script.sh
кажется отстойным, потому что это так. Команды, которые он запускает, просты. И каждый раз, когда мы его запускаем, он делает то же самое.
Что, если бы мы сделали более дружественную для версию ? Назовем его my_friendly_script.sh
. И вот как его следует использовать:
пользователь @ хост: ~ $ bash my_friendly_script.sh Pat
Привет, Пэт
Меня зовут Дун
Приятно познакомиться, Пэт
Видите, как скрипт адаптировал к наличию Pat
? Или какому-нибудь другому названию, которое мы даем ему? Если наш сценарий выполняет разные действия на основе аргументов командной строки, это первый шаг к тому, чтобы сделать его более многоразовым .
Нумерованные параметры для аргументов
Итак, при редактировании кода, который находится в my_friendly_script.sh
, как мы можем ссылаться на то, что было передано в качестве аргумента командной строки, то есть на Pat
?
По соглашению, специальные переменные или параметры , , зарезервированы для аргументов командной строки: 1
— для первого аргумента, 2
— для второго и т. Д.
Итак, чтобы вывести Pat
на стандартный вывод, мы ссылаемся на $ 1
:
echo "Привет, 1 доллар"
echo "Меня зовут $ (whoami)"
echo "Приятно познакомиться, $ 1"
Прочтите руководства, Как написать базовый сценарий оболочки и Как написать многоразовые сценарии оболочки
Как выполнять сценарии в фоновом режиме
Прочтите руководство, Как запустить процесс в фоновом режиме
Как создавать исполняемые скрипты
Непосредственным преимуществом превращения одного из наших простых старых сценариев оболочки в исполняемый сценарий оболочки является разница в запуске сценария:
Вместо этого синтаксиса:
пользователь @ хост: ~ $ bash my_script.ш
Мы можем просто сделать это:
пользователь @ хост: ~ $ ./my_script.sh
Предоставление разрешения на выполнение сценария
Фактически, давайте попробуем вышеуказанную команду для выполнения my_script.sh
: добавление ./
— это то, как мы сообщаем Bash , запускаем этот my_script.sh
(а не другой исполняемый файл my_script. sh
в другом месте файловой системы):
пользователь @ хост: ~ $./my_script.sh
-bash: ./my_script.sh: В доступе отказано
Хорошо, bash это не понравилось. Что означает разрешение ? Как вы сами видели, файл my_script.sh
— это просто текстовый файл без каких-либо реальных полномочий над любой другой коллекцией открытого текста, пока мы не передадим его в качестве аргумента в bash
, и в этом случае bash Программа
выполняет текст как команды.
В отличие от echo
, который представляет собой нечто большее, чем просто текстовый файл, но более релевантный для нашей темы, имеет разрешение на __ выполнение .Как только мы набираем echo
, а затем нажимаем Enter , фактически запускается _program . Нет необходимости говорить bash
: « Эй, вы можете прочитать это слово текста, которое я написал, а затем выполнить его как программу ?»
Нам нужны такие полномочия, это разрешение на выполнение , для my_script.sh .
И вот как мы это делаем:
пользователь @ хост: ~ $ chmod a + x my_script.sh
И все.Если хотите, прочтите больше о команде chmod самостоятельно. Но теперь мы можем попробовать выполнить my_script.sh
без явного вызова bash :
пользователь @ хост: ~ $ ./my_script.sh
Привет
Меня зовут dtown
Рад встрече
Мы даже можем переименовать my_script.sh
в my_script
, чтобы придать ему более элитный вид, и потому что bash честно не заботится, как вы называете свои файлы или какие расширения вы ему даете:
пользователь @ хост: ~ $ mv my_script.sh my_script
пользователь @ хост: ~ $ ./my_script
Привет
Меня зовут dtown
Рад встрече
А что насчет того ./
, который мы должны включить? Мы можем удалить это, переместив my_script
в каталог, который является частью исполняемого файла PATH
среды bash. Вы можете прочитать об этом здесь.
Шебанг
Поскольку мы выполняем my_script
в оболочке Bash, по умолчанию bash неявно вызывается для интерпретации команд внутри my_script
.
Однако позже, когда мы создадим сценарии на языке Python для выполнения из Bash , нам нужно указать в самой первой строке сценария: , мы хотим использовать Python для запуска этого сценария . Поэтому, когда мы запускаем этот скрипт Python, интерпретатор Bash считывает эту строку и знает: «Этот скрипт предназначен для запуска интерпретатором Python, поэтому я передам его»
Эта первая строка, в которой говорится: «Эй, используйте эту программу для интерпретации того, что находится в этом сценарии», она называется shebang .
А для сценариев, предназначенных для запуска bash , это выглядит так:
#! / Usr / bin / env bash
Опять же, необязательно добавлять в наш my_script
. Но это хорошая привычка.
Software Carpentry есть отличное руководство по сценариям оболочки.
Дополнительные сведения о создании повторно используемых и исполняемых сценариев см. В учебнике для класса.
.