Содержание

Как выполнить две команды в одной строке в Windows CMD?



Я хочу запустить две команды в консоли Windows CMD.

В Linux году я бы сделал это так

touch thisfile ; ls -lstrh

Как это делается на Windows?

windows batch-file command-line cmd
Поделиться Источник flybywire     08 ноября 2011 в 18:31

18 ответов


  • Как запустить две команды в одной строке 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: syntax error near unexpected token `mysql’ Но эта простая версия работает: for i in {1..3}; do echo…

  • Как выполнить две команды в Windows CMD?

    У меня есть две команды, которые мне нужно запустить на CMD.

    I хочу сделать файл bash, чтобы я мог запускать команды в один клик. И я хочу подождать некоторое время для выполнения 1-го полностью sudo docker run -d —link selenium-hub:hub selenium/node-chrome sudo docker run -d —link…



1384

Как это на всех Microsoft OSes с 2000 года, и все еще хорошо сегодня:

dir & echo foo

Если вы хотите, чтобы вторая команда выполнялась только в том случае, если первая завершилась успешно:

dir && echo foo

Синтаксис одного амперсанда (&) для выполнения нескольких команд в одной строке восходит к Windows XP, Windows 2000 и некоторым более ранним версиям NT. (4.0 по крайней мере, согласно одному комментатору здесь.)

Есть довольно много других моментов об этом, которые вы найдете, прокручивая эту страницу вниз.

Ниже приводятся исторические данные, для тех, кто может найти их поучительными. T echo foo

Поделиться

djdanlib     08 ноября 2011 в 18:33



592

Цитата из документации:

Использование нескольких команд и условных символов обработки

Вы можете запускать несколько команд из одной командной строки или скрипта, используя условные символы обработки. При выполнении нескольких команд с условными символами обработки команды справа от условного символа обработки действуют на основе результатов команды слева от условного символа обработки.

Например, вы можете выполнить команду только в том случае, если предыдущая команда завершится неудачно. Или вы можете выполнить команду только в том случае, если предыдущая команда выполнена успешно.

Для передачи нескольких команд можно использовать специальные символы, перечисленные в следующей таблице.

  • & [. ..]
    command1 & command2
    Используется для разделения нескольких команд в одной командной строке. Cmd.exe выполняет первую команду,а затем вторую.

  • && [...]
    command1 && command2
    Используйте для выполнения команды, следующей за &&, только если команда, предшествующая символу, выполнена успешно. Cmd.exe выполняет первую команду, а затем выполняет вторую команду только в том случае, если первая команда выполнена успешно.

  • || [...]
    command1 || command2
    Используйте для выполнения команды, следующей за|/, только если команда, предшествующая|/, завершается неудачно. Cmd.exe запускает первую команду, а затем запускает вторую команду только в том случае, если первая команда не завершилась успешно (получает код ошибки больше нуля).

  • ( ) [...]
    (command1 & command2)
    Используется для группировки или вложения команд.

  • ; or ,
    command1 parameter1;parameter2
    Используется для разделения параметров команды.

Поделиться Raihan     08 ноября 2011 в 18:36



74

& -это эквивалент Bash для ; (команды запуска), а && -эквивалент Bash для && (команды запуска только тогда, когда предыдущая не вызвала ошибки).

Поделиться manojlds

    08 ноября 2011 в 18:37


  • как выполнить команду CMD из выходных данных другой команды

    В командной строке Windows (CMD), когда выполняется моя команда command1, выводится полная команда (command2) с аргументами. Мой вопрос заключается в том, есть ли способ выполнить command2 непосредственно сразу после выполнения command1? Обычно команды могут передаваться по конвейеру как command1. ..

  • Node js — как последовательно выполнить две команды windows и получить результат

    Я пытаюсь выполнить две команды windows последовательно и получить результат более поздней. Что-то вроде: cd ${directory} sfdx force:source:convert -d outputTmp/ —json Я просмотрел и попробовал кучу сторонних библиотек, таких как node-cmd. Но до сих пор я не получил каких-либо удачи еще. Как в…



25

Вы можете использовать & для выполнения команд одну за другой. Пример: c:\dir & vim myFile.txt

Поделиться scrappedcola     08 ноября 2011 в 18:34



20


Если вы хотите создать ярлык cmd (например, на рабочем столе), добавьте параметр /k (/k означает keep, /c закроет окно):

cmd /k echo hello && cd c:\ && cd Windows

Поделиться TroodoN-Mike     12 ноября 2013 в 06:39



16

Вы можете использовать вызов , чтобы преодолеть проблему слишком ранней оценки переменных окружения — например,

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

Ну, у вас есть два варианта: трубопроводы или просто & :

DIR /S & START FILE.TXT

Или,

tasklist | find "notepad.exe"

Piping (|) больше подходит для того, чтобы взять вывод одной команды и поместить его в другую. И ( &) просто говорит: беги то-то и то-то.

Поделиться PyDever     29 апреля 2017 в 23:16



4

Я пытаюсь иметь два пинга в одном окне, и это последовательная команда в одной строке. Закончив первую, выполните вторую команду.

Решение состояло в том, чтобы объединиться с start /b в командной строке Windows 7.

Запустите как обычно, без /b, и запустите в отдельном окне.

Команда, используемая для запуска в той же строке:

start /b command1 parameters & command2 parameters

В любом случае, если вы хотите разобрать вывод, я не рекомендую использовать это. Я заметил, что вывод скремблирован между выводами команд.

Поделиться sdcxp     18 марта 2017 в 11:16



4

Чтобы выполнить две команды одновременно, вы должны поместить символ & (амперсанд) между двумя командами. Вот так:

color 0a & start chrome.exe

Ура!

Поделиться PryroTech     13 декабря 2016 в 04:41



2

Нет, cd / && tree && echo %time% . Время Эха — это время, когда выполняется первая команда.

Трубопровод имеет некоторые проблемы, но это не критично, пока люди знают, как он работает.

Поделиться notarealname     22 июля 2016 в 08:56



1

Когда вы пытаетесь использовать или манипулировать переменными в одной строке, остерегайтесь их содержимого! E.g. переменная, подобная следующей

PATH=C:\Program Files (x86)\somewhere;"C:\Company\Cool Tool";%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;

может привести к большим неприятностям, если вы используете его как %PATH%

  1. Закрывающие скобки завершают ваш групповой оператор
  2. Двойные кавычки не позволяют использовать %PATH% для решения проблемы круглых скобок
  3. И что будет содержать ссылочная переменная типа %USERPROFILE% ?

Поделиться V15I0N     11 августа 2017 в 22:22



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



1

Используйте символ & в windows, чтобы использовать команду в одной строке

C:\Users\Arshdeep Singh>cd Desktop\PROJECTS\PYTHON\programiz & jupyter notebook

как в linux году мы используем,

touch thisfile ; ls -lstrh

Поделиться Arshdeep Kharbanda     20 мая 2020 в 07:01



0

Да есть такое. Это & .

&& выполнит команду 2, когда команда 1 будет завершена, при условии, что она не потерпела неудачу.

& будет выполняться независимо.

Поделиться هادی کشاورز Hadi Keshavarz     19 апреля 2019 в 03:29



-2

Это просто: просто дифференцируйте их с помощью знаков && . Пример:

echo "Hello World" && echo "GoodBye World".

«Goodbye World» будет напечатано после «Hello World».

Поделиться Rajan Dhanowa     05 июня 2017 в 15:06


Похожие вопросы:


Как выполнить более одной команды в одной строке

Я хочу выполнить команду на cmd windows cd document ren log.txt 1. txt Но я хочу выполнить команду в одной строке пример : документ CD / РЕН log.txt 1.txt


Как запустить команды ввода Cmd с помощью VB.Net

У меня есть проблема с CMD в проекте VB.NET, который я делаю. Как я могу ввести три разные команды в одно и то же окно CMD, которое я открываю с помощью кнопки на своей форме? Всякий раз, когда я…


Как запустить несколько команд параллельно в командной строке windows cmd?

Я знаю, что можно запустить две команды в одной строке в Windows CMD, как это: dir & echo foo Но как можно выполнить две команды параллельно? Я также знаю, что этого можно достичь, используя…


Как запустить две команды в одной строке 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?

У меня есть две команды, которые мне нужно запустить на CMD. I хочу сделать файл bash, чтобы я мог запускать команды в один клик. И я хочу подождать некоторое время для выполнения 1-го полностью sudo…


как выполнить команду CMD из выходных данных другой команды

В командной строке Windows (CMD), когда выполняется моя команда command1, выводится полная команда (command2) с аргументами. Мой вопрос заключается в том, есть ли способ выполнить command2…


Node js — как последовательно выполнить две команды windows и получить результат

Я пытаюсь выполнить две команды windows последовательно и получить результат более поздней. Что-то вроде: cd ${directory} sfdx force:source:convert -d outputTmp/ —json Я просмотрел и попробовал…


Есть ли способ разделить имя переменной при написании двух команд в одной строке в windows cmd?

Я могу запустить две команды в одной строке в Windows CMD, но я хотел бы разделить имя переменной так, чтобы при повторном запуске команды мне просто нужно было изменить имя переменной один раз. ..


Как запустить несколько команд в одной строке с помощью cmd в windows 10

как сказано в названии, мне нужно выполнить ровно две команды в одной строке, используя cmd в windows 10. Как это возможно?


Как выполнить 2 разные команды cmd на C#

Я работал над проектом, который должен был выполнить две команды cmd на C#, я искал, как это сделать, но ничего не работало для меня, и все давали решение выполнить только одну команду cmd. Я хотел…

Цикл FOR в cmd.exe и несколько команд в одной строке: vashik — LiveJournal

Victor Ashik (vashik) wrote,
Victor Ashik
vashik
Categories: Интерпретатор команд cmd.exe в Windows вовсе не так примитивен, как о нем принято думать. Например, он позволяет выполнять несколько команд одной командной строкой:
echo test&echo rest
Те, у кого под рукой нет Windows, но есть WINE, могут проверить пример так:
wine cmd. exe /c 'echo test&echo rest'
Сегодня мне задали интересный вопрос про этот амперсанд и цикл for.
Цикл for имеет несколько вариантов, самый простой из них — по файлам:
for %i in (*.*) do echo %i
Вопрос звучал так: как выполнить команду, отделенную от цикла амперсандом, один раз:
for %i in (*.*) do echo %i & echo DONE
В выше указанном варианте команда будет выполнена в каждой итерации цикла.
А если нужно выполнить ее один раз, то достаточно заключить цикл в круглые скобки:
(for %i in (*.*) do echo %i) & echo DONE
  • Microsoft Learning — усский

    Microsoft Learning повеселил. Прислали письмо про повышение цен на экзамены, в первой строке HTML — выбор языка: English 简体中 文…

  • Ноутбуки Samsung поставлялись с трояном?

    Это ж надо додуматься — предустанавливать предустанавливать кейлоггер на ноутбуки. Это сильнейший удар по репутации Samsung, а учитывая историю с…

  • Add/Remove Windows Components

    ХозяйкеWindows 2003-админу на заметку: диалог Windows Components Wizard (Add/Remove Windows Components) вызывается командной…

Photo

Hint http://pics.livejournal.com/igrick/pic/000r1edq

Команда FOR в BAT файле. Пример числового цикла и цикла перебора файлов.

Команда for в виде числового цикла

Команда for позволяет организовать выполнение повторяющихся однотипных действий. Можно использовать ее для того, чтобы вывести на экран числа от одного до десяти, как показано на следующем листинге.

for /l %%i in (1,1,10) do echo %%i

Переменная i называется счетчиком цикла. В силу своеобразия синтаксиса команды for, имя счетчика цикла должно состоять из одной буквы. Причем, если мы пишем командный файл, то перед именем счетчика цикла надо поставить сдвоенный знак процента, если же мы просто набираем команду в командной строке, то одиночный.

Логика работы этой команды такова. После слова in указан диапазон изменения счетчика цикла. В данном варианте команды это тройка чисел: начальное значение счетчика, шаг счета, предельное значение счетчика. При выполнении команды командный процессор сначала присвоит переменной i значение 1, а потом на каждом шаге цикла будет увеличивать его на 1, пока оно не превысит 10. Очевидно, таких шагов получится десять. Если бы в качестве шага счета мы указали число 2, то цикл выполнился бы пять раз. На каждом шаге цикла выполняется тело цикла, написанное после слова do. В приведенном примере это команда echo, которая выводит на экран текущее значение счетчика цикла.

Команда for для перебора файлов

Обычно команда for используется для перебора и обработки файлов. Надо сказать, что в достаточно простых случаях массовая обработка файлов выполняется с помощью подстановочных символов. Если, мы хотим всем файлам в текущем каталоге заменить расширение .htm на .html, мы вводим команду ren *. htm *.html. Но если то же самое надо сделать не в одном каталоге, а в дереве каталогов, то без команды for не обойтись. Приведенный ниже командный файл выполняет эту операцию для всех htm-файлов в подкаталоге website текущего каталога. Точнее, во всем дереве каталогов, которое находится внутри website.

for /r website %%i in (*.htm) do ren %%i %%~ni.html

Ключ /r указывает на необходимость обхода каталога website и всех его внутренностей. Если его не указать (но тогда и каталог указывать не разрешается), то обработаны будут только файлы в текущем каталоге. Диапазоном значений счетчика цикла в данном варианте команды является множество всех файлов с расширением .htm, находящихся внутри каталога (точнее, дерева) website. Странная на первый взгляд запись ~ni означает, что из значения переменной i требуется выделить только имя файла. В языке команд MS-DOS предусмотрено несколько таких модификаторов, например, запись ~хi обозначает расширение файла. Все модификаторы описаны в справке по команде for.

Тело цикла может состоять из нескольких команд, заключенных в скобки.

@echo off

for /r website %%i in (*.htm) do (

rem Выводим имя файла

echo %%i

rem Переименовываем файл

ren %%i %%~ni.html

)

Перебор директорий

В том виде, в котором команда for перебирает файлы в директории, она не способна перебрать директории в нужной директории (т. е. видит только файлы). Нужно пользоваться другим синтаксисом.

for /r «C:\test» /d %%i in (*) do (

   echo Name of folder: %%i

   copy D:\filesKLIENT\Kontragent\111.grs «%%i»

)

Или с помощью фильтрации вывода команды dir:

for /f «delims=» %%i in (dir /b /s /a:d «C:\test») do (

   echo Name of folder: %%i

   copy D:\filesKLIENT\Kontragent\111.grs «%%i»

)

для | Microsoft Docs