оператор if не работает, когда переменная имеет значение - PullRequest
0 голосов
/ 02 апреля 2020

Так что в этом коде! MSP! в эхо-выходах 0.

Я делаю проверку, чтобы увидеть, что это за число, а затем выводит тип. Но почему-то говорит, что ни одно из утверждений if не соответствует действительности?

set msp=
for /f "tokens=2 delims==" %%f in ('wmic memorychip get memorytype /value ^| find "="') do (set msp=%%f)
echo !msp!
if !msp!=="0" ( 
echo Unknown s
)

if !msp!==0 ( 
echo Unknown n
)

s и n - это просто я пытаюсь понять, имеет ли значение "".

1 Ответ

1 голос
/ 02 апреля 2020

"0" не равно 0. Цитировать обе стороны уравнения. Но это само по себе не решает вашу проблему. Wmic возвращает некрасивое окончание строки CRCRLF вместо CRLF. Дополнительный CR получает часть переменной (попробуйте echo a!msp!b с вашим кодом). Один из способов (на самом деле самый надежный) для решения этой проблемы заключается в другом for:

setlocal enabledelayedexpansion
set "msp="
for /f "tokens=2 delims==" %%f in ('wmic memorychip get memorytype /value ^| findstr "="') do for %%g in (%%f) do set "msp=%%g"
echo !msp!
if "!msp!" == "0" ( 
  echo Unknown s
)
if !msp! == 0 ( 
  echo Unknown n
)

. В этом особом случае (вывод представляет собой число) также работает set /a:

for /f "tokens=2 delims==" %%f in ('wmic memorychip get memorytype /value ^| findstr "="') do set /a msp=%%f
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...