Gardez CMD ouvert après l'exécution du fichier BAT

169

J'ai un fichier chauve-souris comme celui-ci:

ipconfig

Cela imprimera les informations IP à l'écran, mais avant que l'utilisateur ne puisse lire ces informations, CMD se ferme.

Je crois que CMD suppose que le script est terminé, donc il se ferme.

Comment garder CMD ouvert une fois le script terminé?

Pattyd
la source
4
@RobKielty, c'est bien la même question - mais nous avons ici une nouvelle réponse (qui est meilleure à
mon humble avis
@alfasin N'est-ce pas la même chose que la réponse de Rutger Nijlunsing?
Rob Kielty
@RobKielty non, ma réponse n'est pas la même car elle n'utilise pas pausece qui est une bonne solution de contournement (et c'est pourquoi j'ai voté pour cette réponse) mais pas celle qui résout vraiment le problème car après que l'utilisateur frappe Enterou Spacela fenêtre se ferme. ..
alfasin

Réponses:

163

Selon la façon dont vous exécutez la commande, vous pouvez mettre /kaprès cmdpour garder la fenêtre ouverte.

cmd /k my_script.bat

Le simple fait d'ajouter cmd /kà la fin de votre fichier batch fonctionnera également. Merci à Luigi D'Amico qui a posté à ce sujet dans les commentaires ci-dessous.

Jason Schindler
la source
14
Après tous vos scripts dans votre fichier bat - mettez -> cmd / k
Luigi D'Amico
3
Attention, si votre programme contient des erreurs de syntaxe, la fenêtre se fermera toujours si vous l'avez exécutée par double-clic et mise cmd /kà la fin.
Tobias Feil
Cela n'explique pas la fermeture des fenêtres cmd si l'utilisateur double-clique sur le fichier.
K - La toxicité du SO augmente.
238

Mettez pauseà la fin de votre fichier .BAT.

ElGavilan
la source
7
C'est exactement ce que je recherchais, car j'exécute le fichier bat au démarrage, pas via une commande CMD. +1
Hawkeye
3
Si vous souhaitez toujours interagir avec le fichier bat après votre exécution, remplacez PAUSE par juste cmd / k - puis après l'exécution de vos scripts, vous pouvez toujours exécuter des commandes manuelles dans le même contexte
Luigi D'Amico
Je ne supporte pas de voir que ce n'était pas la "solution" commentaire pour cette question
newhouse
57

Ajoutez simplement @pauseà la fin.

Exemple:

@echo off
ipconfig
@pause

Ou vous pouvez également utiliser:

cmd /k ipconfig
ZygD
la source
5
que fait le symbole @? Y a-t-il une différence entre @pause et pause?
demonicdaron
3
@demonicdaron Réponse expliquant le symbole @: stackoverflow.com/a/21077142/2258
Richard Morgan
Mais dans ce cas, cela ne devrait faire aucune différence.
Florian Leitgeb le
La différence entre @pauseet pausepeut être vue visuellement dans cette réponse: stackoverflow.com/questions/17957076#60053224
ZygD
7

Ajouter pause de (Windows 7) à la fin n'a pas fonctionné pour moi,
mais l'ajout du cmd /kdevant ma commande a fonctionné.

Exemple :

cmd /k gradlew cleanEclipse
Robin
la source
7

Lorsque le fichier .bat est démarré, pas à partir de la ligne de commande (par exemple, double-clic).

echo The echoed text
@pause

at_pause

echo The echoed text
pause

pause

echo The echoed text
cmd /k

cmd k

echo The echoed text & pause

and_pause

ZygD
la source
3

start cmd /ka fait la magie pour moi. Je l'ai en fait utilisé pour préparer l'application cordova phonegap, il exécute la commande, affiche le résultat et attend que l'utilisateur la ferme. Voici l'exemple simple

start cmd /k echo Hello, World!

Ce que j'ai utilisé dans mon cas

start cmd /k cordova prepare

Mettre à jour

Vous pourriez même avoir un titre pour cela en utilisant

start "My Title" echo Hello, World!

jafarbtech
la source
1

Si vous démarrez le script dans la ligne de commande, ajoutez exit /bpour garder CMD ouvert

Julito Sanchis
la source
Ne résout pratiquement pas la question car la modification ipconfiget d'autres fichiers batch intégrés sont une très mauvaise idée .
robinCTS
1

Dans Windows, ajoutez «& Pause» à la fin de votre commande dans le fichier.

Samadadi
la source
1

J'étais également confus quant à la raison pour laquelle nous ajoutons un cmdau début et je me demandais si je devais ouvrir l'invite de commande en premier. Ce que vous devez faire est de taper la commande complète avec cmd /k. Par exemple, supposons que le nom de votre fichier de commandes est "ma_commande.bat" qui exécute la commande, javac my_code.javale code de votre fichier de commandes doit être:

cmd /k javac my_code.java

Donc, fondamentalement, il n'est pas nécessaire d'ouvrir l'invite de commande dans le dossier actuel et de taper la commande ci-dessus, mais vous pouvez enregistrer ce code directement dans votre fichier de commandes et l'exécuter directement.

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

cmd cd C:\xxx\yourbat.bat

la deuxième commande ne ferme pas la fenêtre cmd. L'important est que vous puissiez toujours saisir une nouvelle commande

Huanfasdawq Huanfasd
la source
0

En passant, cela fonctionne également lors de l'exécution d'une commande directement à partir de la barre de recherche dans Windows.

Par exemple, l'exécution ipconfigdirecte fermera directement la fenêtre cmd après la sortie de la commande.

entrez la description de l'image ici

Utiliser cmd \k <command>ne sera pas - c'est ce que j'essayais de faire quand j'ai trouvé cette réponse.

entrez la description de l'image ici

Il a l'avantage supplémentaire de toujours reconnaître la commande que vous essayez d'exécuter. Par exemple, courir à echo hello worldpartir de la barre de recherche ne fonctionnera pas car ce n'est pas une commande, mais cmd \k echo hello worldfonctionne très bien.

sommmen
la source