Вы можете проверить значение переменной %CMDCMDLINE%
.Он содержит команду, которая использовалась для запуска cmd.exe
.
Я подготовил тестовый файл .bat:
@Echo Off
echo %CMDCMDLINE%
pause
При запуске из открытого окна cmd.exe
скрипт печатает "C:\Windows\system32\cmd.exe"
.При двойном щелчке он печатает cmd /c ""C:\Users\mbu\Desktop\test.bat" "
. Чтобы проверить, был ли ваш скрипт запущен двойным щелчком, вам нужно проверить, содержит ли %cmdcmdline%
путь к вашему сценарию.Окончательное решение выглядело бы так:
@echo off
set interactive=1
echo %cmdcmdline% | find /i "%~0" >nul
if not errorlevel 1 set interactive=0
rem now I can use %interactive% anywhere
if _%1_==__ (
echo usage: %~nx0 filename
if _%interactive%_==_0_ pause
)
Редактировать: реализованы исправления ошибок, обсуждаемые в комментариях;отредактированный пример, чтобы продемонстрировать их