захват сообщения об ошибке от эха в командной строке - PullRequest
0 голосов
/ 28 февраля 2011

Я записываю некоторый текст в текстовый файл в командном скрипте cmd, например:

echo FlagValue=Y>>flag.txt

Обычно это работает нормально, но иногда, если текстовый файл открывается другим процессом, возвращается сообщение об ошибке, сообщающее, что доступ запрещен. Что я хотел бы сделать, это остановить пакетный файл, если возникает ошибка с чем-то вроде:

if return_code GEQ 1 GOTO ERR

Но не удается найти код возврата из команды echo. Существует ли или существует лучшая тактика, чтобы использовать для захвата сообщения об ошибке?

Ответы [ 2 ]

2 голосов
/ 30 ноября 2012
echo FlagValue=Y>>flag.txt || echo access_denied Ensure you have rights

или

echo FlagValue=Y>>flag.txt
if /i %errorlevel% NEQ 0 do (
  echo access_denied Ensure you have rights
  call sendmail.cmd
)

Образец:

C:\Users\Me\Desktop>echo Hello > MyFile.txt || echo ERROR
Access is denied.
ERROR

C:\Users\Me\Desktop>echo Hello > a.txt || echo ERROR

C:\Users\Me\Desktop>
0 голосов
/ 28 февраля 2011

Каждый раз, когда вы запускаете команду, для переменной среды ERRORLEVEL устанавливается значение возврата вашей команды.Так что попробуйте echo% ERRORLEVEL% сразу после запуска команды.(Будьте внимательны, так как любая команда, которую вы запускаете между ними (включая echo), переопределит% ERRORLEVEL%.

Также проверьте их для получения дополнительной информации:
Может ли пакетный файл захватить коды выходакоманды, которые он вызывает?
Пакетные файлы - Обработка ошибок

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