>

Как определить, вызван пакетный файл из командной строки или из проводника?

6 февраля 2011 // Хельги

Для некоторых пакетных файлов полезно различать, был ли файл запущен из командной строки или двойным щелчком из проводника (или его аналога). Например, при запуске пакетника, выполняющего функции мейк-файла, из проводника результаты сборки хочется оставить на экране — то есть поставить в конце вызов команды pause. Но если запускать его из консоли, то «пауза» будет совершенно лишней.

Можно заметить, что при вызове из проводника (или, например, из менеджера Total Commander) переменная %0 содержит полный путь к пакетному файлу, заключённый в кавычки. Если же пакетник вызывается из консоли, то, скорее всего, при вызове было указано имя файла (с расширением или без).

Справка по команде call подсказывает нам, что имя вызванного пакетного файла можно получить при помощи выражения %~n0, а имя с расширением — при помощи %~nx0. Сравнив эти выражения с исходным значением %0, можно принять решение о вызове «паузы».

То есть пакетный файл можно закончить следующим фрагментом:

if .%0. == .%~n0. goto END
if .%0. == .%~nx0. goto END

pause
:END

P. S. Если есть вероятность, что пакетник будет запускаться не только из его собственного каталога, т. е. командами вида dir\script, то можно зайти с другой стороны и сравнивать значение %0 с полным путём: %~f0.

Тэги: cmd, советы
Комментариев нет

Ремонт и евроремонт: о разнице ментальностейОпыт дружественных держав

Написать комментарий

На этот адрес будут приходить только уведомления о новых комментариях к этой записи.
Чтобы отправить комментарий, введите сюда слово «человек».
« »  
Высота поля:
Разрывы строк (Enter) будут сохранены. HTML не работает. Гиперссылки: вставьте URL.

Ваш комментарий появится после одобрения модератором.