2009-10-30 00:17:46 +0000 2009-10-30 00:17:46 +0000
67
67

Meerdere commando's uitvoeren met 1 regel in Windows commandline?

**Hoe kan ik meerdere commando’s uitvoeren in de Windows commandline met slechts een enkele regel?

Dus stel dat ik een SVN update wil uitvoeren en dan alle bestanden naar een andere locatie wil kopiëren…

svn update; copy *.* c:\development\copy\

Dat werkt natuurlijk niet. Is er een karakter of scheidingsteken zoals ‘;’ om zoiets uit te voeren?

Antwoorden (6)

107
107
107
2009-10-30 00:24:41 +0000

Ja, die is er. Het is &.

&& voert commando 2 uit als commando 1 klaar is, als het niet mislukt is.

& voert ‘t toch uit.

4
4
4
2014-02-12 06:33:03 +0000

Als je meerdere commando’s wilt uitvoeren met 1 regel, waarbij je de commando’s begint met start, bijvoorbeeld, als je een commando als dit wilt uitvoeren:

start "" netsh dump && pause

Dan moet je dat in 2 stappen doen (de één-regel oplossing staat aan het eind van dit antwoord).

Eerst schrijf je de commando’s naar een tijdelijk batch bestand (in dit geval kun je & of && gebruiken):

echo netsh dump ^&^& pause ^&^& exit>foobar.cmd
  -or-
echo netsh dump ^& pause ^& exit>foobar.cmd

Merk op dat je elk van de "&"s (ampersands) moet “escapen” met een "^" zodat ze worden behandeld als gewone karakters in het echo commando.  Als alternatief kun je het tijdelijke batch bestand maken met een tekst editor, zoals Notepad.

Gebruik dan start om het batchbestand te starten:

start "" foobar.cmd
  -or-
start "" "temporary foobar.cmd"

Note: Het lege paar dubbele aanhalingstekens is voor de "Title" die zal worden getoond in de titelbalk van het opdrachtvenster dat start zal openen. Dit "Title" argument is technisch gezien een optioneel argument voor start, maar het is eigenlijk vereist , als het commando dat start zal uitvoeren dubbel aanhalingstekens heeft. Bijvoorbeeld, in het tweede voorbeeld:

start "" "temporary foobar.cmd"

als je het lege paar dubbele aanhalingstekens weglaat zoals dit:

start "temporary foobar.cmd"

dan zal start een nieuw opdrachtvenster openen, en "temporary foobar.cmd" gebruiken als het nieuwe opdrachtvenster "Title", en niets zal worden uitgevoerd in het nieuwe opdrachtvenster).

Als je wilt dat start wacht tot het batch-bestand klaar is (nadat de pause is afgewezen), voordat start klaar is, dan moet je de /w switch toevoegen aan het start commando:

start "" /w foobar.cmd

Je kunt dit alles samen op één regel zetten en zelfs het tijdelijke batchbestand verwijderen (foobar.cmd):

echo netsh dump ^&^& pause ^&^& exit>foobar.cmd && start "" /w foobar.cmd && del foobar.cmd
  -or-
echo netsh dump ^& pause ^& exit>foobar.cmd & start "" /w foobar.cmd & del foobar.cmd

Merk op dat als je het tijdelijke batchbestand gaat verwijderen, je start moet uitvoeren met de /w switch, anders zal het tijdelijke batchbestand waarschijnlijk worden verwijderd voordat het de kans heeft om uit te voeren.

4
4
4
2009-11-16 07:41:51 +0000

Tenminste in MS-DOS 6.22 gebruikte ik de toets Ctrl+T om een soort paragraafsymbool te krijgen. Dit werkte net als de door Phoshi genoemde &. Dit werkt echter alleen als je doskey.exe hebt draaien.

0
0
0
2018-07-12 07:51:31 +0000

Ja gebruik &!

%command1% & %command2% voert beide commando’s uit

%command1% && %command2% voert het eerste commando uit, als dat werkte voert u het tweede commando uit

%command1% || %command2% voert het eerste commando uit, als dat mislukte voert u het tweede commando uit

Zie hier

-1
-1
-1
2016-12-07 17:03:12 +0000

Ik vond dat het gebruik van ‘START’ meerdere commando’s werkte (ik gebruik Windows 10 Home). Bijvoorbeeld:

START chrome.exe "page.web.com" & timeout 20
-2
-2
-2
2014-10-21 05:01:24 +0000

maak een batchbestand met een korte naam zoals bat.bat.

add cmd /c %1 
    cmd /c %2 
rem

enzovoort tot 9 regels en sla

op en gebruik het dan met dubbele aanhalingstekens

bat "command one" "command two" "command three"

cmd /c zal elk commando uitvoeren en afsluiten voor de volgende regel niet zeggen dat dit beter is dan && alleen dat het makkelijk is.