Tenere aperto CMD dopo l'esecuzione del file BAT


169

Ho un file bat come questo:

ipconfig

Ciò stamperà le informazioni IP sullo schermo, ma prima che l'utente possa leggere tali informazioni CMD si chiude.

Credo che CMD presuma che lo script sia terminato, quindi si chiude.

Come posso tenere CMD aperto dopo che lo script è finito?



4
@RobKielty va bene la stessa domanda - ma qui abbiamo una nuova risposta (che è meglio IMHO)
alfasin


@alfasin Non è la stessa cosa della risposta di Rutger Nijlunsing?
Rob Kielty,

@RobKielty no, la mia risposta non è la stessa in quanto non utilizza, il pauseche è una bella soluzione (ed è per questo che ho votato questa risposta) ma non uno che risolve davvero il problema perché dopo che l'utente ha colpito Entero Spacela finestra si chiuderà. ..
Alfasin il

Risposte:


163

A seconda di come stai eseguendo il comando, puoi metterlo /kdopo cmdper tenere aperta la finestra.

cmd /k my_script.bat

Anche la semplice aggiunta cmd /kalla fine del file batch funzionerà. Ringraziamo Luigi D'Amico che ha pubblicato questo post nei commenti qui sotto.


14
Dopo tutti gli script nel file bat - metti -> cmd / k
Luigi D'Amico

3
Fai attenzione che se il tuo programma contiene errori sintattici, la finestra si chiuderà comunque se lo avessi eseguito facendo doppio clic e cmd /kalla fine.
Tobias Feil,

Questo non spiega la chiusura delle finestre cmd se l'utente ha fatto doppio clic sul file.
K - La tossicità in SO sta crescendo.

238

Metti pausealla fine del tuo file .BAT.


7
Questo è esattamente quello che stavo cercando, perché sto eseguendo il file bat all'avvio, non tramite un comando CMD. +1
Occhio di

3
Se vuoi ancora interagire con il file bat dopo la tua esecuzione, sostituisci PAUSE con solo cmd / k - dopo che gli script sono stati eseguiti, puoi comunque eseguire comandi manuali nello stesso contesto
Luigi D'Amico,

Non sopporto di vedere che questa non è stata la "soluzione" per questa domanda
Newhouse,

57

Aggiungi @pausealla fine.

Esempio:

@echo off
ipconfig
@pause

Oppure puoi anche usare:

cmd /k ipconfig

5
cosa fa il simbolo @? C'è una differenza tra @pause e pause?
demonicdaron,

3
@demonicdaron Risposta che spiega il simbolo @: stackoverflow.com/a/21077142/2258
Richard Morgan

Ma in questo caso, non dovrebbe fare alcuna differenza.
Florian Leitgeb,

La differenza tra @pausee pausepuò essere visto visivamente in questa risposta: stackoverflow.com/questions/17957076#60053224
ZygD

7

L'aggiunta pausedi (Windows 7) alla fine non ha funzionato per me,
ma l'aggiunta cmd /kdi davanti al mio comando ha funzionato.

Esempio :

cmd /k gradlew cleanEclipse

7

Quando il file .bat viene avviato non all'interno della riga di comando (ad esempio, fare doppio clic).

echo The echoed text
@pause

at_pause

echo The echoed text
pause

pausa

echo The echoed text
cmd /k

cmd k

echo The echoed text & pause

and_pause


3

start cmd /kha fatto la magia per me. L'ho effettivamente usato per preparare l'app cordova phonegap, esegue il comando, mostra il risultato e attende che l'utente lo chiuda. Di seguito è riportato il semplice esempio

start cmd /k echo Hello, World!

Quello che ho usato nel mio caso

start cmd /k cordova prepare

Aggiornare

Puoi persino avere un titolo per questo usando

start "My Title" echo Hello, World!


1

Se si avvia lo script dalla riga di comando, quindi aggiungere exit /bper mantenere aperto CMD


Non risolve praticamente la domanda poiché la modifica ipconfige altri file batch incorporati sono una pessima idea .
robinCTS

1

In Windows aggiungi '& Pausa' alla fine del tuo comando nel file.


1

Ero anche confuso sul motivo per cui stiamo aggiungendo un cmdall'inizio e mi chiedevo se dovevo aprire prima il prompt dei comandi. Quello che devi fare è digitare il comando completo insieme a cmd /k. Ad esempio, supponi che il nome del tuo file batch sia "my_command.bat" che esegue il comando, javac my_code.javaquindi il codice nel tuo file batch dovrebbe essere:

cmd /k javac my_code.java

Quindi in pratica non è necessario aprire il prompt dei comandi nella cartella corrente e digitare il comando sopra ma è possibile salvare questo codice direttamente nel file batch ed eseguirlo direttamente.


0
javac -d C:\xxx\lib\ -classpath C:\xxx\lib\ *.java

cmd cd C:\xxx\yourbat.bat

il secondo comando rende la finestra cmd non chiusa. L'importante è che tu sia ancora in grado di inserire un nuovo comando


0

Come sidenote funziona anche quando si esegue un comando direttamente dalla barra di ricerca in Windows.

ad esempio, l'esecuzione ipconfigdiretta chiuderà direttamente la finestra cmd dopo la chiusura del comando.

inserisci qui la descrizione dell'immagine

Usando cmd \k <command>will - che era quello che stavo cercando di fare quando ho trovato questa risposta.

inserisci qui la descrizione dell'immagine

Ha il vantaggio aggiuntivo di riconoscere sempre il comando che si sta tentando di eseguire. Ad esempio, l'esecuzione echo hello worlddalla barra di ricerca non funzionerà perché non è un comando, tuttavia cmd \k echo hello worldfunziona perfettamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.