原文连接
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
免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。