Hvordan kører jeg to kommandoer på én linje i Windows CMD?

Jeg vil køre to kommandoer i en Windows CMD-konsol.

I Linux ville jeg gøre det sådan her

touch thisfile ; ls -lstrh

Hvordan gøres det i Windows?

Løsning

Sådan har det været på alle Microsoft OS'er siden 2000, og det er stadig godt i dag:

dir & echo foo

Hvis du ønsker, at den anden kommando kun skal udføres, hvis den første afsluttes med succes:

dir && echo foo

Syntaksen med et enkelt ampersand (&) til at udføre flere kommandoer på én linje går tilbage til Windows XP, Windows 2000 og nogle tidligere NT-versioner. (4.0 i det mindste, ifølge en kommentator her.)

Der er en hel del andre punkter om dette, som du kan finde på scrolling nedad denne side.

Historiske data følger, for dem, der måske finder det lærerigt.

Før det var && syntaksen kun en funktion i shell-erstatningen 4DOS, før denne funktion blev tilføjet til Microsofts kommandointerpreter.

I Windows 95, 98 og ME brugte man i stedet pipe-tegnet:

dir | echo foo

I MS-DOS 5.0 og senere, gennem nogle tidligere Windows- og NT-versioner af kommandotolkeren, var den (udokumenterede) kommandoseparator tegn 20 (Ctrl+T), som jeg her vil repræsentere med ^T.

dir ^T echo foo
Kommentarer (17)

Et citat fra dokumentationen:

Anvendelse af flere kommandoer og betingede behandlingssymboler

Du kan køre flere kommandoer fra en enkelt kommandolinje eller et enkelt script ved hjælp af betingede behandlingssymboler. Når du kører flere kommandoer med betingede behandlingssymboler, fungerer kommandoerne til højre for det betingede behandlingssymbol på baggrund af resultaterne af kommandoen til venstre for det betingede behandlingssymbol.

Du kan f.eks. ønske at køre en kommando kun, hvis den foregående kommando mislykkes. Eller du kan også ønske at køre en kommando kun, hvis den foregående kommando er vellykket.

Du kan bruge de specialtegn, der er anført i følgende tabel, til at videregive flere kommandoer.

  • & [...] `kommando1 & kommando2`` Bruges til at adskille flere kommandoer på én kommandolinje. Cmd.exe kører den første kommando og derefter den anden kommando.
  • && [...] `kommando1 &&& kommando2`` Bruges til kun at køre kommandoen efter &&, hvis kommandoen før symbolet er vellykket. Cmd.exe kører den første kommando og kører derefter kun den anden kommando, hvis den første kommando blev gennemført med succes.
  • ||| [...] kommando1 ||kommando2 Bruges til kun at køre den efterfølgende kommando ||, hvis den foregående kommando || mislykkes. Cmd.exe kører den første kommando og kører derefter kun den anden kommando, hvis den første kommando ikke blev afsluttet med succes (modtager en fejlkode større end nul).
  • ( ) [...] (kommando1 & kommando2) Bruges til at gruppere eller indlejre flere kommandoer.
  • ; eller , `kommando1 parameter1;parameter2`` Anvendes til at adskille kommandoparametre.
Kommentarer (7)

Du kan bruge & til at køre kommandoer efter hinanden. Eksempel: c:\dir & vim myFile.txt

Kommentarer (0)