[转]bat if语句中 set /p 接收不到用户输入 变量值空

发布时间 2023-11-27 17:42:12作者: 悟透

原文连接

https://zhidao.baidu.com/question/496503004.html


一、问题

以下为bat代码,我健入1,进入if,我故意在if中用了goto循环用来验证是否接收到我输入的内容,我发现,第一次循环接收不到我输入的内容,从第二次循环开始就能够接收到了,请高手帮我修改下,我需要一进入if,用set /p就能够接收到我输入的内容

@echo off
echo 0-退出 1-继续
set /p input=请选择:
if %input%==1 (
    :loop
    set /p name=请输入名称:
    echo name=%name%
    set /p password=请输入密码:
    echo password=%password%
    goto loop
)
if %input%==0 exit
pause

二、解决方法

原因一:要使用延迟变量
原因二:变量名不是用百分号而是用他!感叹号来表示的

@echo off
setlocal EnableDelayedExpansion

echo 0-退出 1-继续
set /p input=请选择:

if %input%==1 (
    :loop
    set /p name=请输入名称:
    echo name=!name!
    set /p password=请输入密码:
    echo password=!password!
    goto loop
)
if %input%==0 exit
pause


免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。