Batch file 当变量没有值时if语句不起作用
所以在这段代码中!msp!在回波输出中为0 我正在做一个检查,看看那个数字是多少,然后呼出类型。但出于某种原因,它说如果所有的陈述都不正确Batch file 当变量没有值时if语句不起作用,batch-file,Batch File,所以在这段代码中!msp!在回波输出中为0 我正在做一个检查,看看那个数字是多少,然后呼出类型。但出于某种原因,它说如果所有的陈述都不正确 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
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只是我想看看“”是否重要 “0”
不等于0
。引用等式的两边。但这并不能解决你的问题Wmic
返回一个丑陋的行结尾CRLF
,而不仅仅是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
/a根据需要将其转换为数字,而不需要额外的cr内容。。。工作得很好!谢谢记住第一个方法,如果有一天你希望得到一个字符串(
;)代码>