Come posso eseguire due comandi su una riga in Windows CMD?



7 Answers

Una citazione dalla documentazione:

Utilizzo di più comandi e simboli di elaborazione condizionale

È possibile eseguire più comandi da una singola riga di comando o uno script utilizzando i simboli di elaborazione condizionale. Quando si eseguono più comandi con simboli di elaborazione condizionale, i comandi a destra del simbolo di elaborazione condizionale agiscono in base ai risultati del comando a sinistra del simbolo di elaborazione condizionale.

Ad esempio, è possibile eseguire un comando solo se il comando precedente non riesce. Oppure, potresti voler eseguire un comando solo se il comando precedente ha avuto successo.

È possibile utilizzare i caratteri speciali elencati nella seguente tabella per passare più comandi.

  • & [...]
    command1 & command2
    Utilizzare per separare più comandi su una riga di comando. Cmd.exe esegue il primo comando e quindi il secondo comando.

  • && [...]
    command1 && command2
    Utilizzare per eseguire il comando seguendo && solo se il comando che precede il simbolo ha esito positivo. Cmd.exe esegue il primo comando e quindi esegue il secondo comando solo se il primo comando è stato completato correttamente.

  • || [...]
    command1 || command2
    Utilizzare per eseguire il comando seguente || solo se il comando precedente || non riesce. Cmd.exe esegue il primo comando e quindi esegue il secondo comando solo se il primo comando non è stato completato correttamente (riceve un codice di errore maggiore di zero).

  • ( ) [...]
    (command1 & command2)
    Utilizzare per raggruppare o nidificare più comandi.

  • ; or ,
    command1 parameter1;parameter2
    Utilizzare per separare i parametri di comando.

Question

Voglio eseguire due comandi in una console CMD Windows.

In Linux lo farei in questo modo: touch thisfile ; ls -lstrh touch thisfile ; ls -lstrh .

Come è fatto su Windows?




Quando cerchi di utilizzare o manipolare le variabili in una riga, fai attenzione ai loro contenuti! Ad esempio una variabile come la seguente

PATH=C:\Program Files (x86)\somewhere;"C:\Company\Cool Tool";%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;

può portare a un sacco di guai sfortunati se lo usi come %PATH%

  1. Le parentesi di chiusura terminano la tua dichiarazione di gruppo
  2. Le virgolette non ti permettono di usare %PATH% per gestire il problema delle parentesi
  3. E cosa contiene una variabile referenziata come %USERPROFILE% ?



Per eseguire due comandi contemporaneamente, devi inserire un simbolo & (commerciale) tra i due comandi. Così:

color 0a & start chrome.exe

Saluti!




È possibile utilizzare un numero di simboli di elaborazione quando si eseguono più comandi sulla stessa linea e, in alcuni casi, può essere necessario elaborare il reindirizzamento, alterando l'output in altri casi o semplicemente fallendo. Un caso importante è mettere sulla stessa riga i comandi che manipolano le variabili.

@echo off
setlocal enabledelayedexpansion
set count=0
set "count=1" & echo %count% !count!

0 1

Come si vede nell'esempio precedente, quando i comandi che utilizzano le variabili sono posizionati sulla stessa riga, è necessario utilizzare l'espansione ritardata per aggiornare i valori delle variabili. Se la tua variabile è indicizzata, usa il comando CALL con i modificatori %% per aggiornare il suo valore sulla stessa riga:

set "i=5" & set "arg!i!=MyFile!i!" & call echo path!i!=%temp%\%%arg!i!%%

path5=C:\Users\UserName\AppData\Local\Temp\MyFile5



Bene, hai due opzioni: Piping, o solo & :

DIR /S & START FILE.TXT

O,

tasklist | find "notepad.exe"

Piping ( | ) è più per prendere l'output di un comando e metterlo in un altro. E ( & ) sta solo dicendo di farlo, e quello.




Puoi usare & per eseguire i comandi uno dopo l'altro. Esempio: c:\dir & vim myFile.txt




No, cd / && tree && echo %time% . Il tempo di eco è quando viene eseguito il primo comando.

Le tubazioni hanno qualche problema, ma non è fondamentale finché le persone sanno come funziona.




È possibile utilizzare la chiamata per superare il problema delle variabili di ambiente che vengono valutate troppo presto - ad es

set A=Hello & call echo %A%





Related