如何在批处理文件中正确使用“else”?

时间:2013-09-13 20:04:58

标签: windows if-statement batch-file cmd

我一直在做点什么,而且我被困的地方是:

  

设置 / p!=

     

如果%!%== yahoo.com 转到 YAHOO

     

如果%!%== facebook.com 转到 FACEBOOK

     

如果%!%== mail.google.com 转到 GMAIL

     

如果%!%== youtube.com 转到 YOUTUBE

     

如果%!%== google.com 转到 GOOGLE

     

其他转到 ELSE

不过,这只是一个例子。 好吧,问题是,其他方法无法正常工作......我想我应该怎么做,所以我希望有人可以提供帮助......

4 个答案:

答案 0 :(得分:1)

您可以更轻松地维护代码:

set /p "site="
for %%A in (
  yahoo.com:YAHOO
  facebook.com:FACEBOOK
  mail.google.com:GMAIL
  youtube.com:YOUTUBE
  google.com:GOOGLE
) do for /f "tokens=1,2 delims=:" %%B in (%%A) do if "%site%" equ "%%B goto %%C
goto SomewhereElse

更好的是,您可以使用完整的网站地址作为标签,只要每个标签从该行的开头开始,您的代码就变得微不足道了:

set /p "site="
>nul findstr /bc:":%site%" "%~f0" && (goto %site%) || goto SomewhereElse

:yahoo.com
rem code here

:facebook.com
rem etc

答案 1 :(得分:0)

ELSE是批量关键词,请勿将其用于跳转标签:

set /p "X="
if "%X%" == "yahoo.com" goto YAHOO
if "%X%" == "facebook.com" goto FACEBOOK
if "%X%" == "mail.google.com" goto GMAIL
if "%X%" == "youtube.com" goto YOUTUBE
if "%X%" == "google.com" goto GOOGLE
goto ELSEWHERE

在制作批处理脚本之前,您应该学习批处理。

答案 2 :(得分:0)

set /p "X="
if "%X%" == "yahoo.com" (
    echo YAHOO
) else if "%X%" == "facebook.com" (
    echo FACEBOOK
) else if "%X%" == "mail.google.com" (
    echo GMAIL
) else if "%X%" == "youtube.com" (
    echo YOUTUBE
) else if "%X%" == "google.com" (
    echo GOOGLE
) else (
    echo OTHER
)

答案 3 :(得分:0)

您不必使用Else代码:

set /p !=

if %!% == yahoo.com goto YAHOO

if %!% == facebook.com goto FACEBOOK

if %!% == mail.google.com goto GMAIL

if %!% == youtube.com goto YOUTUBE

if %!% == google.com goto GOOGLE

goto ELSE

并转到mail.google.com以及所有不会将您发送到网站的内容。