Dans cmd, lorsque nous appuyons sur Ctrl+C, nous obtenons la fin de l'application cible mais si l'application cible est appelée à partir d'un fichier batch, nous obtenons cette confirmation "Terminate batch job (Y/N)". Je ne me souviens pas d'un cas où j'ai choisi de ne pas terminer le travail par lot. Comment éviter cette confirmation ?
Réponses
Trop de publicités?Dans mon cas, il s'agissait du fichier ping.bat qui se trouvait dans mon répertoire utilisateur ( C:\Users\ dans Vista ou C:\Documents et Settings\ dans XP) qui bloquait le travail en lot de manière indéterminée.
Ce fichier batch était exécuté chaque fois que je lançais ping à partir de l'invite de commande où le répertoire courant est mon répertoire utilisateur. L'exécution de ping à partir de la fenêtre Run ou du répertoire d'un autre utilisateur fonctionnait bien.
J'ai supprimé le fichier de mon répertoire utilisateur et le problème a été résolu !
J'ai rencontré ce problème avec un EXE qui semblait envoyer ^C au lot parent à la sortie, provoquant l'invite "Terminate Batch Job" même en cas de sortie propre.
La solution que j'ai choisie est d'exécuter le lot avec "Start", comme dans les autres réponses, mais à partir d'une invite PowerShell (ou via la méthode de l'interpréteur PowerShell à partir de CMD, si vous choisissez).
Nous sommes maintenant en 2018, et dans Windows 10, Microsoft a commencé à supplanter CMD par PowerShell comme invite de commande préférée, de sorte qu'elle est facilement disponible dans l'interface graphique, par défaut.
Start
est un alias pour Processus de démarrage .
Lorsqu'il est exécuté, il se lance et revient. Ainsi, lorsque vous arrêtez le processus lancé, il n'y a pas d'invite "Terminate Batch Job".
Par défaut, il n'attend pas, donc aucun autre argument que la commande et ses arguments n'est requis.
Utilisation de start mything.exe -mythings -arguments
dans mon lot a parfaitement fonctionné.
Dans PowerShell scripts doivent être précédés de leur chemin d'accès pour être lancés, donc j'exécute mon fichier batch comme suit .\host.bat
.
L'une des principales raisons de supprimer le message "Terminer le travail par lot (O/N)" est l'exécution d'un programme en boucle (par exemple, pour le relancer en cas de plantage).
Este https://stackoverflow.com/a/8185270/1170023 a permis de trouver cette solution :
@ECHO OFF
rem assumes you have installed pslist from sysinternals to windows PATH
:RUN
echo Starting GoldenEye Dedicated Server
start "" srcds.exe -console -game gesource +maxplayers 16 +map ge_complex
:LOOP
pslist srcds >nul 2>&1
if ERRORLEVEL 1 (
goto RUN
) else (
rem echo Dedicated server is still running
timeout /t 5 >nul
goto LOOP
)