La dernière ligne de mon fichier de commandes est une pause
. Est-il possible d’append une condition if pour voir si le script est exécuté à l’invite de commandes ou en double-cliquant pour exécuter? Je veux ignorer la pause si elle est exécutée dans l’invite de commande.
... ... if not RUN_IN_COMMAND_PROMPT ( pause )
EDIT: Nous espérons trouver une solution qui fonctionne dans Windows Server 2003/2008, WinXP, Win7.
CALL :GETMYSWITCH %CMDCMDLINE% IF /I "%MYSWITCH%" == "/C" ECHO I WAS STARTED IN THE EXPLORER & PAUSE IF /I NOT "%MYSWITCH%" == "/C" ECHO I WAS STARTED IN A DOS SESSION :GETMYSWITCH SET MYSWITCH=%2
Par définition, un script shell sera toujours exécuté dans une “invite de commande”. Mais essayez d’utiliser la SESSIONNAME
env de SESSIONNAME
– elle ne semble PAS être présente si le script a été démarré en double-cliquant au lieu de l’exécuter manuellement à partir d’une invite.
Je sais que c’est un an plus tard, mais pour les futurs utilisateurs, vous pouvez utiliser
If /I "%COMSPEC%" == %CMDCMDLINE% Goto SkipPause pause :SkipPause
Il sautera le bloc de pause.
Utilisez la commande tty
Utilisez l’option -s et vérifiez la valeur de retour.