Batch file SET/p崩溃批处理文件进程
在一个批处理文件中,我从用户那里获取信息,以便以后进行数据库工作 我首先询问用户是否正在使用Windows Auth,然后根据答案询问用户名和密码,或者设置一个变量并继续 但就我个人而言,我不明白为什么一行Batch file SET/p崩溃批处理文件进程,batch-file,variables,Batch File,Variables,在一个批处理文件中,我从用户那里获取信息,以便以后进行数据库工作 我首先询问用户是否正在使用Windows Auth,然后根据答案询问用户名和密码,或者设置一个变量并继续 但就我个人而言,我不明白为什么一行SET/p导致批处理文件崩溃,而另一行SET/p却没有 这是我的密码: @ECHO OFF @SETLOCAL ENABLEDELAYEDEXPANSION CHOICE /M "Will you be using Windows Authentication to connect to
SET/p
导致批处理文件崩溃,而另一行SET/p
却没有
这是我的密码:
@ECHO OFF
@SETLOCAL ENABLEDELAYEDEXPANSION
CHOICE /M "Will you be using Windows Authentication to connect to the database?"
ECHO ERRORLEVEL: %ERRORLEVEL%
@PAUSE
IF ERRORLEVEL 2 (
ECHO ERRORLEVEL should be 2: %ERRORLEVEL%
@PAUSE
SET _USINGWINAUTH=FALSE
SET /p _USERNAME=User name:
REM SET /p _PASSWORD=Password (NOTE: Password will be displayed as you type):
) ELSE (
ECHO ERRORLEVEL should be 1: %ERRORLEVEL%
@PAUSE
SET _USINGWINAUTH=TRUE
)
ECHO.
ECHO _USINGWINAUTH: %_USINGWINAUTH%
ECHO _USERNAME: %_USERNAME%
ECHO _PASSWORD: %_PASSWORD%
@PAUSE
按原样,第二个SET/p
被注释掉后,无论您是回答Y
还是N
脚本都可以正常运行
但是,如果第二行SET/p
没有注释,不管答案是什么,脚本在ECHO ERRORLEVEL
之前的暂停处点击一个键后立即关闭
我只是不明白为什么会这样 如上次所述,在使用插入符号时,如果您重新编写逻辑,则会更好 一个例子:
@ECHO关闭
选项/M“您是否将使用Windows身份验证连接到数据库”
如果“%ERRORLEVEL%”=“1”设置“\u使用WinAuth=TRUE”&转到下一步
设置“\u USINGWINAUTH=FALSE”
设置/P“\u用户名=用户名:”
设置/P“\u PASSWORD=密码(将在您键入时显示):
:下一个
回音(
使用WinAuth设置
设置_username2>numl
设置密码2>NUL
暂停
当在任何文本中的(代码块)内使用右括号时,如果没有使用插入符号转义,代码块将过早结束。就在我看到这一点之前,我取出了便笺部分并运行了它,因此我知道我在哪里做错了。再次感谢,@LotPings!将提示字符串置于引号之间;问题是)
被命令解释器识别为if ErrorLevel 2(
条件…@marky,我相信您有两个选项来回显)
。您可以将SET
命令括在引号中,或者使用^
来转义)
。您还需要多少个选项。您还收到了关于其中一个选项中的右括号的警告。