Искам да изпълня две команди в конзолата CMD на Windows.
В 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 вместо това се използваше символът pipe:
dir | echo foo
В MS-DOS 5.0 и по-късните версии, както и в някои по-ранни версии на командния интерпретатор в Windows и NT, (недокументираният) разделител на команди беше символ 20 (Ctrl+T), който тук ще представям с ^T.
dir ^T echo foo
Цитат от документацията:
Използване на множество команди и символи за условна обработка
Можете да изпълнявате няколко команди от един команден ред или скрипт, като използвате символи за условна обработка. Когато изпълнявате няколко команди със символи за условна обработка, командите вдясно от символа за условна обработка действат въз основа на резултатите от командата вляво от символа за условна обработка.
Например, може да искате да изпълните команда само ако предишната команда не успее. Или може да искате да изпълните команда само ако предишната команда е успешна.
Можете да използвате специалните символи, изброени в следващата таблица, за да предадете няколко команди.
& [...]
команда1 & команда2
Използвайте, за да отделите няколко команди в един команден ред. Cmd.exe изпълнява първата команда, а след това и втората команда.
&& [...]
command1 && command2
Използва се за изпълнение на командата, следваща &&, само ако командата, предшестваща символа, е успешна. Cmd.exe изпълнява първата команда и след това изпълнява втората команда само ако първата команда е завършила успешно.
|| [...]
command1 || command2
Използвайте, за да стартирате командата, следваща ||, само ако командата, предхождаща ||, е неуспешна. Cmd.exe изпълнява първата команда, а след това изпълнява втората команда само ако първата команда не е завършила успешно (получава код за грешка, по-голям от нула).
( ) [...]
(команда1 & команда2)
Използва се за групиране или влагане на няколко команди.
; или ,
command1 parameter1;parameter2
Използвайте за разделяне на параметрите на командата.
Можете да използвате &, за да изпълнявате командите една след друга. Пример: c:\dir & vim myFile.txt