Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 当变量没有值时if语句不起作用_Batch File - Fatal编程技术网

Batch file 当变量没有值时if语句不起作用

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

所以在这段代码中!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 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内容。。。工作得很好!谢谢记住第一个方法,如果有一天你希望得到一个字符串(
;)