本帖最后由 qixiaobin0715 于 2022-4-1 09:05 编辑
回复 10# bcetl
你说的不是真正原因,实际上不是太冲突。直接回车概念就是变量%var%未被定义,即变量值%var%为空。
if %var%==0 goto ddll
上面一行代码替换后就变成了:
if ==0 goto ddll
等号左边为空,等号不成立,程序就会因出错而退出。
解决的办法可以将变量引起来:
if "%var%"=="0" goto ddll
如果变量未被定义,那就是空值,由于引号的存在,替换后就变成了:
if ""=="0" goto ddll
虽然变量为空值,但由于双引号存在,等号成立,程序就不会出错。
还有一个解决办法,先行判断变量是否被定义,也可以避免出现上面错误的情况。完整代码如下:- @echo off
- setlocal enabledelayedexpansion
- set /p var=
- if defined var (
- if !var!==0 goto :ddll
- if !var!==1 goto :hhgg
- if !var!==2 goto :lrr
- if !var!==. goto :bye
- ) else (
- goto :gg
- )
- echo,输入值均不符合跳转条件。
- pause
- goto :eof
-
- :gg
- echo 未输入任何值
- pause
- goto :eof
-
- :ddll
- echo 0
- pause
- goto :eof
-
- :hhgg
- echo 1
- pause
- goto :eof
-
- :lrr
- echo 2
- pause
- goto :eof
-
- :bye
- echo .
- pause
- goto :eof
复制代码
|