195 votes

Comment supprimer la confirmation "Terminer le travail par lot (O/N)" ?

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 ?

0voto

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 !

0voto

Il Cognato Points 1

Il suffit de rediriger le stdin du lot vers null en ajoutant < nul à la fin de la commande.

0voto

Brandon Points 2580

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 .

0voto

umbrae Points 436

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
)

-1voto

Ricky Boyce Points 135

Le moyen le plus simple de supprimer la confirmation si vous utilisez l'option Hyper est d'ajouter l'option hyper-oui plugin.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X