Я хочу выполнить две команды в консоли Windows CMD.
В Linux я бы сделал это так
touch thisfile ; ls -lstrh
Как это делается в Windows?
источник
Я хочу выполнить две команды в консоли Windows CMD.
В Linux я бы сделал это так
touch thisfile ; ls -lstrh
Как это делается в Windows?
Подобно этому на всех ОС Microsoft с 2000 года и до сих пор хорош:
dir & echo foo
Если вы хотите, чтобы вторая команда выполнялась только в случае успешного завершения первой команды:
dir && echo foo
Синтаксис с одним амперсандом (&) для выполнения нескольких команд в одной строке восходит к Windows XP, Windows 2000 и некоторым более ранним версиям NT. (По крайней мере, 4.0, согласно одному комментатору здесь.)
Есть немало других моментов, которые вы найдете, прокручивая эту страницу вниз.
Исторические данные следуют, для тех, кто может найти это образовательным.
До этого синтаксис && был только функцией замены оболочки 4DOS до того, как эта функция была добавлена в интерпретатор команд Microsoft.
В Windows 95, 98 и ME вы бы вместо этого использовали символ канала:
dir | echo foo
В MS-DOS 5.0 и более поздних версиях, в некоторых более ранних версиях интерпретатора команд для Windows и NT, (недокументированным) разделителем команд был символ 20 (Ctrl + T), который я буду обозначать здесь ^ T.
dir ^T echo foo
cmd
я полагаю, что это не плохая привычка. :)Цитата из документации:
источник
cmd /c "echo foo & echo bar"
.vagrant up && vagrant ssh
работал без кавычек на Windows 10.&
- делает его асинхронным и работает одновременно. Я застрял, потому что я использовал&&
с синхронно и продолжается, только если первый удастся!&
не делает команды асинхронными или параллельными.command1 & command2
будет работатьcommand2
послеcommand1
завершения Успех или неудача неcommand1
имеет значения.&
является эквивалентом Bash для;
(команды запуска) и&&
является эквивалентом Bash&&
(команды запуска только тогда, когда предыдущая не вызвала ошибку).источник
;
в Linux;
означает запуск первой команды, ожидание ее завершения, а затем выполнение второй команды.&
означает выполнить первую команду, перевести ее в фоновый режим и запустить вторую команду. Таким образом, обе программы запускаются одновременно. Обратите внимание, что они не объединяют символы, они являются конечными символами первой команды; Вы можете запустить одну команду в фоновом режимеprogname &
без второй команды.Вы можете использовать & для запуска команд одна за другой. Пример:
c:\dir & vim myFile.txt
источник
Если вы хотите создать ярлык cmd (например, на рабочем столе), добавьте параметр / k (/ k означает сохранить, / c закроет окно):
источник
Вы можете использовать call для решения проблемы оценки переменных среды слишком рано - например,
источник
echo
печатает старый значение, а не новое значение. По крайней мере, это то, что я наблюдаю на моем Windows 7.setlocal EnableDelayedExpansion
в скрипте илиcmd /v
). Например:timeout 5 && cmd /v /c echo !TIME! && echo %TIME%
.Ряд символов обработки может использоваться при выполнении нескольких команд в одной строке и может привести к перенаправлению обработки в некоторых случаях, изменению вывода в другом случае или просто к ошибке. Одним из важных случаев является размещение в одной строке команд, которые манипулируют переменными.
Как видно из приведенного выше примера, когда команды, использующие переменные, размещаются в одной строке, вы должны использовать отложенное расширение для обновления значений переменных. Если ваша переменная проиндексирована, используйте команду CALL с %% модификаторами, чтобы обновить ее значение в той же строке:
источник
cmd /V:ON /c "set i=5 & set arg!i!=MyFile!i! & echo path!i!=%temp%\%arg!i!%"
cmd /c ipconfig /all & Output.txt
Эта команда выполняет команду и открывает
Output.txt
файл в одной командеисточник
Итак, я пытался включить конкретную задачу запуска
RegAsm
(зарегистрировать сборку) из контекстного меню. Проблема, с которой я столкнулся, заключалась в том, что результат вспыхнет и исчезнет, прежде чем я смог прочитать его. Поэтому я попытался передать по трубопроводуPause
, который не работает при сбое команды (как упоминалось здесь, команда Pause не работает в сценарии .bat, а здесь команда PAUSE для пакетного файла не работает ). Поэтому я попытался,cmd /k
но это оставляет окно открытым для большего количества команд (я просто хочу прочитать результат). Поэтому я добавилpause
затемexit
к цепи, в результате чего в следующем:cmd /k C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe "%1" /codebase \"%1\" & pause & exit
Это работает как чудо - RegAsm запускает файл и показывает его результаты, затем отображается приглашение «Нажать любую клавишу для продолжения ...», а затем окно командной строки закрывается при нажатии клавиши.
PS Для других, кому это может быть интересно, вы можете использовать следующие записи файла .reg, чтобы добавить ассоциацию dllfile к файлам .dll и затем расширение команды RegAsm для этого (обратите внимание на экранированные кавычки и обратную косую черту):
Теперь у меня есть красивое меню, вызываемое правой кнопкой мыши, чтобы зарегистрировать сборку.
источник
Чтобы выполнить две команды одновременно, вы должны поместить символ & (амперсанд) между двумя командами. Вот так:
Ура!
источник
Я пытаюсь иметь два пинга в одном окне, и это последовательная команда в одной строке. После окончания первого запуска второй команды.
Решением было объединиться с
start /b
командной строкой Windows 7.Начните как обычно, без
/b
, и запустите в отдельном окне.Команда, используемая для запуска в той же строке:
В любом случае, если вы хотите проанализировать вывод, я не рекомендую использовать это. Я заметил, что вывод зашифрован между выводами команд.
источник
Ну, у вас есть два варианта: трубопровод или просто
&
:Или,
Piping (
|
) больше подходит для получения выходных данных одной команды и помещения их в другую. И (&
) просто говорит запустить это, и это.источник
&
и что делает, и|
чем они отличаются, если вообще отличаются? Прямо сейчас люди, не знакомые с этими понятиями, не могут сами решить, какой из них следует использовать в их случаях.Нет,
cd / && tree && echo %time%
. Время отголоска - это время, когда выполняется первая команда.У трубопровода есть некоторая проблема, но это не критично, пока люди знают, как это работает.
источник
Еще один пример: например, когда мы используем систему
gulp
сборки, а неgulp
- по умолчанию> сборкаgulp build
- build build-foldergulp watch
- начать просмотр файлаgulp dist
- построить dist-folderМы можем сделать это одной строкой:
источник
Когда вы пытаетесь использовать или манипулировать переменными в одной строке, остерегайтесь их содержимого! Например, переменная, подобная следующей
может привести к множеству непредвиденных проблем, если вы используете его как
%PATH%
%PATH%
для решения проблемы скобок%USERPROFILE%
содержать ссылочная переменная, такая как ?источник
Используйте
&
символ в Windows, чтобы использовать команду в одной строкекак в Linux мы используем,
источник
Да, есть. Это
&
.&&
выполнит команду 2, когда команда 1 будет выполнена, при условии, что она не завершилась неудачей.&
будет выполнять независимо.источник
Все просто: просто различайте их по
&&
знакам. Пример:«Goodbye World» будет напечатан после «Hello World».
источник
&&
является условным оператором, следующая команда выполняется только тогда, когда первая команда выполнена успешно (errorlevel = 0)Hello World
не провалилась. как сказал @jeb,&&
условно.&
запускает команды независимо от того, был ли предыдущий успешным или нет.