File batch: come lasciare aperta la finestra della console


105

Ho due file batch, uno di loro ne esegue un altro, ad es

  1. "File batch personale"> 2. "Altro file batch"

Ho creato un collegamento al primo file batch e modificato le sue proprietà per richiamarlo nel modo seguente.

cmd.exe /k "<SomePath>\<My Batch File>.bat" & pause

Cosa voglio fare Voglio che la finestra della console sia aperta al termine dell'esecuzione del file batch. Ora si chiude, ha provato a giocare con i flag di cmd, nessun risultato.

Piattaforma: Windows7


AGGIORNAMENTO 1

Modificata la struttura, il semplice esempio come questo non funziona bene, solo un file batch cioè non c'è il 2. "Some Other Batch File" L'unico file batch contiene smth come questo

start /B /LOW /WAIT make package
cmd /K

AGGIORNAMENTO 2

Lo stesso collegamento richiamato da Explorer non chiude la finestra della console. Ma la finestra della console si chiude quando il collegamento viene richiamato dall'elemento bloccato sulla barra delle applicazioni

Qualche idea su come mantenere aperta la finestra della console?


Presumo che tu voglia My Batch Fileche resti nei paraggi?
Marc B

"È importante lasciare aperta la finestra della console di un file batch" viene chiesto e risposto in modo più chiaro qui: superuser.com/questions/175515/…
oberlies

Risposte:


126

Se questo è davvero tutto ciò che il file batch sta facendo, rimuovere cmd /Ke aggiungere PAUSE.

start /B /LOW /WAIT make package
PAUSE

Quindi, punta il tuo collegamento a "My Batch File.bat"... non è necessario eseguirlo con CMD /K.

AGGIORNARE

Ah, alcune nuove informazioni ... stai cercando di farlo da un collegamento bloccato sulla barra delle applicazioni.

Ho trovato questo, Aggiunta di file batch alla barra delle applicazioni di Windows 7 come l'avvio rapido di Vista / XP , con la parte pertinente di seguito.

  1. Innanzitutto, aggiungi una scorciatoia per CMD.EXEla barra delle applicazioni premendo il pulsante di avvio, quindi digita "cmd" nella casella di ricerca, fai clic con il pulsante destro del mouse sul risultato e scegli "Aggiungi alla barra delle applicazioni".
  2. Fare clic con il tasto destro sul collegamento sulla barra delle applicazioni.
  3. Verrà visualizzato un elenco che include " Prompt dei comandi " e " Sblocca questo programma dalla barra delle applicazioni ".
  4. Fare clic con il pulsante destro del mouse sull'icona CMD.EXEe selezionare Properties.
  5. Nella casella Target, vai alla fine di "%SystemRoot%\system32\cmd.exe"e digita " /C "il percorso e il nome del file batch.

Per i tuoi scopi, puoi:

  1. Usa /Ce metti un PAUSEalla fine del tuo file batch.

    O

  2. Modificare la riga di comando da utilizzare /Ke rimuovere PAUSEdal file batch.

L'ho già fatto, fondamentalmente la mia domanda non è come chiamare un altro file batch ...
deimus

Quindi dobbiamo vedere il contenuto di entrambi i file batch.
aphoria

Si prega di consultare la domanda aggiornata
deimus

Lo stesso problema, la sostituzione di CMD / K non funziona. Perché la finestra della console non si chiude se il collegamento viene richiamato da Explorer?
deimus

13

Qui:

cmd.exe /k "<SomePath>\<My Batch File>.bat" & pause

Dai un'occhiata a cosa stai facendo:

  1. (cmd / K) Avvia una NUOVA istanza di cmd.
  2. (& pausa) Mette in pausa l' istanza di cmd CURRENT .

Come risolverlo? bene, usando la sintassi corretta, racchiudendo l'argomento per la nuova istanza CMD:

cmd.exe /k ""<SomePath>\<My Batch File>.bat" & pause"

6

Ho appena scritto l'ultima riga come Pausa e ha funzionato bene sia con .bat che con .cmd. Verrà visualizzato il messaggio anche come "Premere un tasto qualsiasi per continuare".


Questa è la risposta corretta! Dovrebbe essere il primo votato.
Patrick Hillert

5

Nell'ultima riga del file batch che vuoi tenere aperto metti un file

pause >nul


Sembra che si stia chiudendo presto, forse un errore nello script. Prova ad aprire un prompt di cmd e ad eseguirlo da lì, quindi puoi vedere se ci sono errori.
Bali C

3

Per lasciare la finestra della console aperta devi solo aggiungere all'ultima riga di comando nel file batch:

' & pause'

2

Puoi semplicemente inserire un pausecomando nell'ultima riga del tuo file batch:

@echo off
echo Hey, I'm just doing some work for you.
pause

Ti darà qualcosa del genere come output:

Ehi, sto solo facendo del lavoro per te.

Premere un tasto qualsiasi per continuare ...

Nota: l' utilizzo di @echo impedisce di eseguire l'output del comando prima che l'output venga stampato.


0
rem Just use "pause" at the end of the batch file.
...
......
.......
pause

-1

messo alla fine riaprirà la tua console

start cmd 

Questo non risolve il problema, l'utente vuole mantenere la finestra aperta, non riaprirne una vecchia.
Adam,

-5

Basta premere Invio e digitare Pausa e funziona bene

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.