Можно ли отличить, когда оболочка запускается из командной строки или из другой оболочки? - PullRequest
0 голосов
/ 05 августа 2011

Например, я могу напрямую позвонить myscript.cmd или в другом скрипте я могу поставить строку в myscript.

Причина в том, что если скрипт запускается сам по себе, он исчезает, как только он перестает выполняться, поэтому я не вижу результат, поэтому в конце я должен добавить @pause, но когда я запускаю его из другого shell это вызывает раздражение, так как окно консоли не выходит таким образом.

Поэтому я ищу какое-то условие «если» для решения этой проблемы.

Ответы [ 3 ]

1 голос
/ 05 августа 2011

Если вы не создадите переменную окружения, как предложил Стю, вы не найдете ни одной, которая делает то, что вы хотите. Вам нужно написать небольшую программу, которая программно запрашивает родительский процесс и возвращает значение, которое может проверить ваш скрипт. Если вы запускаетесь из Start-> run, вашим родителем будет explorer.exe. В противном случае это будет cmd.exe или какой-нибудь другой exe.

Пример кода для поиска родительского процесса можно найти здесь .

1 голос
/ 19 октября 2012

Чтобы сделать ваш скрипт приостановленным при двойном щелчке мышью (или удалив на него файлы), но прервав обычным способом при вызове из консоли:

@echo off

echo Hello World!

:: ...your ScriptCode...

(((echo.%CMDCMDLINE%)|find /I "%~0")>NUL)&&pause
0 голосов
/ 05 августа 2011

Почему бы не установить это самостоятельно?

SET RUNNINGFROMOTHERSHELL=YES
CALL MYSCRIPT.CMD
SET RUNNINGFROMOTHERSHELL=

В MyScript.Cmd:

IF "%RUNNINGFROMOTHERSHELL%"=="" GOTO NOPAUSE
PAUSE
:NOPAUSE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...