Fichier batch pour déterminer si vous utilisez l’invite de commandes

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.