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

Eseguire più comandi con 1 riga nella riga di comando di Windows?

**Come posso eseguire più comandi nella riga di comando di Windows con una sola linea?

Quindi, per esempio, diciamo che voglio eseguire un aggiornamento SVN e poi copiare tutti i file in un'altra posizione…

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

Questo ovviamente non funziona. C'è un carattere o un delimitatore come ‘;’ per eseguire qualcosa del genere?

Risposte (6)

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

Sì, c'è. È &.

&& eseguirà il comando 2 quando il comando 1 è completo, sempre che non sia fallito.

& verrà eseguito indipendentemente.

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

Se vuoi eseguire più comandi con 1 linea, dove stai iniziando i comandi con start, per esempio, se vuoi eseguire un comando come questo:

start "" netsh dump && pause

Allora, devi farlo in 2 passi (la soluzione a una riga è alla fine di questa risposta).

Per prima cosa, scriva i comandi in un file batch temporaneo (in questo caso, può usare & o &&):

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

Si noti che è necessario “sfuggire” a ciascuno degli "&"s (ampersands) con un "^" per consentire loro di essere trattati come caratteri ordinari nel comando echo.  In alternativa, è possibile creare il file batch temporaneo con un editor di testo, come Notepad.

Poi, usa start per avviare il file batch:

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

Nota: La coppia vuota di doppi apici è per lo "Title" che sarà mostrato nella barra del titolo della finestra di comando che start aprirà. Questo argomento "Title" è tecnicamente un argomento opzionale per start, ma è in realtà richiesto , se il comando che start eseguirà è tra virgolette. Per esempio, nel secondo esempio:

start "" "temporary foobar.cmd"

se lasciate fuori la coppia vuota di doppi apici come questo:

start "temporary foobar.cmd"

allora start aprirà una nuova finestra di comando, e userà "temporary foobar.cmd" come nuova finestra di comando "Title", e nothing sarà eseguito nella nuova finestra di comando).

Se vuoi che start aspetti che il file batch sia completato (dopo che pause è stato respinto), prima che start completi, allora devi aggiungere lo switch /w al comando start:

start "" /w foobar.cmd

Puoi mettere tutto questo insieme su una linea e anche rimuovere (cancellare) il file batch temporaneo (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

Nota che se stai per cancellare il file batch temporaneo, devi eseguire start con lo switch /w, altrimenti il file batch temporaneo sarà probabilmente cancellato prima che abbia la possibilità di essere eseguito.

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

Almeno in MS-DOS 6.22 usavo il tasto Ctrl+T per ottenere una specie di simbolo di paragrafo. Questo funzionava proprio come il & menzionato da Phoshi. Questo però funziona solo se avete doskey.exe in esecuzione.

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

usa &!

%command1% & %command2% esegue entrambi i comandi

%command1% && %command2% esegue il primo comando, se questo funziona esegue il secondo comando

%command1% || %command2% esegue il primo comando, se questo fallisce esegue il secondo comando

Vedi qui

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

Ho scoperto che l'uso di ‘START’ ha fissato più comandi funzionanti (sto usando Windows 10 Home). Per esempio:

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

fare un file batch con un nome breve cioè bat.bat.

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

e così via fino a 9 linee e salvate

poi usatelo con le doppie virgolette

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

cmd /c eseguirà ogni comando e si spegnerà per la linea successiva non dicendo che questo è meglio di && solo che è facile.