使用CMD Batch中的默认值

glh*_*glh 1 cmd batch-file

有人可以帮我处理我的批次.我试图在我的批次开始时逃脱,但它不起作用.我确信它很简单,但我不是这类编程的常规用户.

cls
@echo off
set usr_out=y
set /p usr_out=Press [N] to cancel:

if NOT %usr_out% == Y goto myend
if NOT %usr_out% == y goto myend

echo in

pause
exit

:myend
echo out
pause
Run Code Online (Sandbox Code Playgroud)

编辑:对不起,我忘了详细说明上面的代码只有echo out在我没有输入值时才转到该行.

Ans*_*ers 5

您将默认值设置%usr_out%小写 y:

set usr_out=y
Run Code Online (Sandbox Code Playgroud)

但随后检查变量是不平等的一个大写 Y:

if NOT %usr_out% == Y goto myend
Run Code Online (Sandbox Code Playgroud)

由于y并且Y确实不相等,因此您的脚本正确地跳转到:myend此时.

你需要在这里修改你的逻辑.如果要在不满足所有给定条件的情况下跳过代码块,则必须在批处理中使用类似的内容:

if "%usr_out%"=="y" goto continue
if "%usr_out%"=="Y" goto continue
goto myend
:continue
Run Code Online (Sandbox Code Playgroud)

但是,在您的特定情况下,您可以使用更简单的方法,因为您只需要对一个字母进行不区分大小写的检查:

if /i not "%usr_out%"=="y" goto myend
Run Code Online (Sandbox Code Playgroud)

另一方面:exit我建议使用goto :eof(跳转到脚本的末尾)或exit /b(退出批处理脚本而不终止cmd.exe)而不是普通的.否则,在命令提示符下手动运行脚本可能会无意中终止命令提示符窗口.