如何在bat文件中使用goto函数?

Raj*_*yak 2 if-statement goto batch-file

我正在编写 bat 文件,其中 if 语句 goto 命令在第一个语句中不起作用

:purge_operation
set /p ABC_DEF=Are you want to Purge ABC or DEF Data ? (ABC/DEF):

:start
if %ABC_DEF%==ABC goto ABC
if %ABC_DEF%==DEF goto DEF
:end

:ABC
echo purge ABC data !

:DEF
echo purge DEF data !

pause >nul
Run Code Online (Sandbox Code Playgroud)

输出: - - - - - -

实际结果 - - - - -

Are you sure you want to Purge DATA ? (Y/N):Y
Are you want to Purge ABC or DEF Data ? (ABC/DEF):ABC
purge ABC data !
purge DEF data !
Run Code Online (Sandbox Code Playgroud)

预期成绩 - -

Are you sure you want to Purge DATA ? (Y/N):Y
Are you want to Purge ABC or DEF Data ? (ABC/DEF):ABC
purge ABC data !
Run Code Online (Sandbox Code Playgroud)

Ano*_*ard 6

Goto 将执行点更改为标签。标签本身不会改变执行行为。换句话说,在批处理文件中的每个逻辑单元之后,您需要更改控制流,否则它将继续执行下一个语句。

例如,您可以修改示例批处理文件以仅执行所选结果之一,如下所示:

:purge_operation
set /p ABC_DEF=Are you want to Purge ABC or DEF Data ? (ABC/DEF):

:start
if %ABC_DEF%==ABC goto ABC
if %ABC_DEF%==DEF goto DEF
echo Unknown entry
goto :EOF

:ABC
echo purge ABC data !
goto :done

:DEF
echo purge DEF data !
goto :done

:done
pause >nul
Run Code Online (Sandbox Code Playgroud)

第二个goto :done完全没有必要,但这是一个好习惯,以防您将来添加更多分支可能性。