Изящная ошибка при запуске cmd - PullRequest
0 голосов
/ 07 июня 2010

В командной строке cmd или bat-файле я выдаю следующее:

start textpad myfile.txt  and it works fine.

Если текстовая панель программы не существует на компьютере, появляется звуковой сигнал об ошибке и появляется всплывающее окно, при котором необходимо нажать кнопку OK.

Я хочу перехватить эту ошибку, чтобы я мог сделать что-то вроде

start textpad myfile.txt || start notepad myfile.txt

где || подразумевает, что если запуск текстового поля не удастся, то должен произойти запуск блокнота. ОДНАКО, я все еще получаю звук ошибки и требование удара ОК. Мое намерение состоит в том, чтобы избежать звука и требования любого вмешательства пользователя.

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

start textpad 
if not %ERRORLEVEL% == 0 GOTO END
start notepad
:END

Любая помощь будет отличной.

спасибо

1018 * Ted *

Ответы [ 5 ]

4 голосов
/ 07 июня 2010

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

for %%x in (textpad.exe) do set temp=%%~$PATH:x
if [%temp%]==[] echo Didn't exist.

Но могу ли я предложить вам просто использовать

start foo.txt

вместо навязывания пользователю определенного редактора? Связи типов файлов существуют по причине.

0 голосов
/ 26 февраля 2013

Возможно, у вас уже есть ответ, но мое чрезмерное эго заставило меня опубликовать мой ответ.

Итак, это должно сработать.

start textpad 2> nul||start notepad

Это запустит блокнот, есликоманда start texpad терпит неудачу, одновременно перенаправляя любое сообщение об ошибке, которое вы можете получить из первой команды.

0 голосов
/ 07 июня 2010

Существуют некоторые методы для обнаружения присутствия определенного инструмента, но это работает только для инструмента командной строки или с приложениями с графическим интерфейсом, также поддерживающими параметры командной строки.

Для этих приемов посмотрите на это стр.

0 голосов
/ 07 июня 2010

Параметр "/ wait" поможет вам ..

START /wait NOTEPAD.EXE SOME.TXT
echo %ERRORLEVEL%
# This gives zero as output.

START /wait TEXTPAD.EXE SOME.TXT
echo %ERRORLEVEL%
# This gives non-zero output.
0 голосов
/ 07 июня 2010

Я не верю, что вы найдете способ заставить эту работу. Возможно, посмотрите на наличие textpad.exe на машине? Если вы можете предсказать, из какого каталога он будет загружен, это будет довольно легко с помощью IF EXIST.

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