Пакетные ошибки результаты отличаются от CMD?

StackOverflow https://stackoverflow.com/questions/3936533

  •  30-09-2019
  •  | 
  •  

Вопрос

Почему ErrorLevel ведет себя по-разному в этих двух обстоятельствах?

Из командной строки:

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\>aescrypt.exe -v 2> NUL

C:\>echo %errorlevel%
9009

По сравнению с пакетным файлом:

@echo off

set /P C="> "?

set or=
if "%C%"=="a" set or=1
if "%C%"=="A" set or=1
if defined or (
    aescrypt.exe -v 2> NUL
    echo %errorlevel%
)

Результат:

> a
1
Это было полезно?

Решение

Удалите вас «@echo Off» и посмотрите, как выполняется код. Возможно, вы обнаружите, что ErrorLevel в примере 2 является результатом «если определена».

Кроме того, попробуйте это:

@echo off
set /P C="> "?
set or=
if /i "%C%"=="a" set or=1
if not defined or goto SKIP
aescrypt.exe -v 2> NUL
echo %errorlevel%
:SKIP

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top