Chcę uruchomić dwie komendy w konsoli CMD systemu Windows.
W Linuksie zrobiłbym to tak
touch thisfile ; ls -lstrh
Jak to się robi w systemie Windows?
Tak jak na wszystkich systemach operacyjnych Microsoftu od 2000 roku, i nadal dobrze dzisiaj:
dir & echo foo
Jeśli chcesz, aby drugie polecenie wykonało się tylko wtedy, gdy pierwsze zakończyło się pomyślnie:
dir && echo foo
Składnia pojedynczego ampersanda (&) do wykonywania wielu poleceń w jednym wierszu pochodzi z Windows XP, Windows 2000 i niektórych wcześniejszych wersji NT. (Przynajmniej 4.0, według jednego z komentatorów tutaj).
Jest jeszcze kilka innych punktów na ten temat, które znajdziesz przewijając tę stronę w dół.
Dane historyczne następuje, dla tych, którzy mogą znaleźć to edukacyjne.
Przed tym, składnia && była tylko cechą zamiennika powłoki 4DOS, zanim ta cecha została dodana do interpretera poleceń Microsoftu.
W Windows 95, 98 i ME zamiast tego używałeś znaku pipe:
dir | echo foo
W MS-DOS 5.0 i późniejszych, przez niektóre wcześniejsze wersje Windows i NT, separatorem poleceń (nieudokumentowanym) był znak 20 (Ctrl+T), który tutaj będę reprezentował przez ^T.
dir ^T echo foo
Cytat z dokumentacji:
Używanie wielu poleceń i symboli przetwarzania warunkowego.
Można uruchamiać wiele poleceń z jednego wiersza poleceń lub skryptu, używając symboli przetwarzania warunkowego. Kiedy uruchamiasz wiele poleceń z symbolami przetwarzania warunkowego, polecenia po prawej stronie symbolu przetwarzania warunkowego działają w oparciu o wyniki polecenia po lewej stronie symbolu przetwarzania warunkowego.
Na przykład, można chcieć uruchomić polecenie tylko wtedy, gdy poprzednie polecenie nie powiedzie się. Lub, możesz chcieć uruchomić polecenie tylko wtedy, gdy poprzednie polecenie zakończy się sukcesem.
Do przekazywania wielu poleceń można używać znaków specjalnych wymienionych w poniższej tabeli.
& [...]
.polecenie1 & polecenie2
. Służy do oddzielenia wielu poleceń w jednym wierszu poleceń. Cmd.exe uruchamia pierwsze polecenie, a następnie drugie.
&&& [...]
komenda1 && komenda2
Służy do uruchamiania polecenia następującego po && tylko jeśli polecenie poprzedzające symbol zakończyło się powodzeniem. Cmd.exe uruchamia pierwszą komendę, a następnie uruchamia drugą tylko wtedy, gdy pierwsza zakończyła się powodzeniem.
|| [...]
.polecenie1 ||polecenie2
Służy do uruchomienia polecenia następującego po || tylko jeśli polecenie poprzedzające || nie powiedzie się. Cmd.exe uruchamia pierwszą komendę, a następnie uruchamia drugą tylko wtedy, gdy pierwsza nie zakończyła się pomyślnie (otrzyma kod błędu większy od zera).
( ) [...]
(komenda1 & komenda2)
. Używane do grupowania lub zagnieżdżania wielu komend.
; lub ,
komenda1 parametr1;parametr2
. Użyj do oddzielenia parametrów komendy.