Пакетный файл, чтобы определить, используете ли командную строку - PullRequest
9 голосов
/ 23 июля 2011

Последняя строка в моем командном файле - pause. Есть ли способ добавить условие if, чтобы увидеть, запущен ли скрипт в командной строке или двойным щелчком мыши для запуска? Я хочу пропустить паузу, если она работает в командной строке.

...
...
if not RUN_IN_COMMAND_PROMPT (
  pause
)

EDIT: Надеюсь найти решение, работающее в Windows Server 2003/2008, WinXP, Win7.

Ответы [ 4 ]

7 голосов
/ 23 июля 2011
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
2 голосов
/ 22 декабря 2012

Я знаю, что это год спустя, но для поиска будущих людей вы можете использовать

If /I "%COMSPEC%" == %CMDCMDLINE% Goto SkipPause
pause
:SkipPause

Он пропустит блок паузы.

1 голос
/ 23 июля 2011

По определению, сценарий оболочки всегда будет запускаться в «командной строке». Но попробуйте использовать SESSIONNAME env var - похоже, он НЕ присутствует, если скрипт был запущен двойным щелчком вместо запуска его вручную из приглашения.

0 голосов
/ 23 июля 2011

Используйте команду tty.

Используйте параметр -s и проверьте возвращаемое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...