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?A ce site j'ai trouvé une solution efficace :
script2.cmd < nul
Pour ne pas avoir à taper ceci à chaque fois, j'ai fait un deuxième script appelé script.cmd
dans le même dossier que la ligne ci-dessus. J'ai testé cette technique sur XP uniquement, mais d'autres l'ont confirmée sur Win 7.
Nathan ajoute : une autre option est de mettre le code suivant en haut de script.cmd qui fait la même chose dans un seul fichier :
rem Bypass "Terminate Batch Job" prompt.
if "%~1"=="-FIXED_CTRL_C" (
REM Remove the -FIXED_CTRL_C parameter
SHIFT
) ELSE (
REM Run the batch with <NUL and -FIXED_CTRL_C
CALL <NUL %0 -FIXED_CTRL_C %*
GOTO :EOF
)
Installer Clink et modifiez le paramètre "terminate_autoanswer". Le fichier de configuration devrait être ici : C:\Users\<username>\AppData\Local\clink\settings
.
# name: Auto-answer terminate prompt
# type: enum
# Automatically answers cmd.exe's 'Terminate batch job (Y/N)?' prompts. 0 =
# disabled, 1 = answer 'Y', 2 = answer 'N'.
terminate_autoanswer = 1
Cela fonctionne donc avec n'importe quel cmd.exe
fenêtre. Vous n'avez pas besoin de modifier ce qui est en cours d'exécution ou autre, puisque clink se greffe sur cmd.exe
. 1
Génial, IMO !
1 Mais vous devrez fermer et rouvrir cmd.exe
avant de le faire avant qu'il ne prenne effet.
2 Dépôt original non maintenu de CLink ici : http://mridgers.github.io/clink/
Si vous n'avez pas besoin de faire quoi que ce soit dans le fichier de traitement par lots après que votre application se termine normalement, alors l'utilisation de la commande start
permet de s'assurer que le fichier batch est déjà terminé au moment où vous appuyez sur Ctrl-C. Et donc le message n'apparaîtra pas.
Par exemple :
@echo off
set my\_command=ping.exe
set my\_params=-t www.google.com
echo Command to be executed by 'start': %my\_command% %my\_params%
:: When NOT using /B or /WAIT then this will create a new window, while
:: execution of this very batch file will continue in the current window:
start %my\_command% %my\_params%
echo.
echo This line will be executed BEFORE 'start' is even finished. So, this
echo batch file will complete BEFORE one presses Ctrl-C in the other window.
echo.
:: Just for testing use 'pause' to show "Press any key to continue", to see
:: the output of the 'echo' commands. Be sure to press Ctrl-C in the window
:: that runs the 'ping' command (not in this very window). Or simply remove
:: the next line when confused:
pause
(Testé sur Windows XP.)
- Réponses précédentes
- Plus de réponses