2013-09-13 5 views
0

Я работал что-то, и точка, где я застрял это:!Как правильно использовать 'else' в пакетном файле?

набор/р =

если%% == yahoo.com Гото YAHOO

если%!% == facebook.com Гото FACEBOOK

если%!% == mail.google.com Гото GMAIL

если%!% == youtube.com Гото YOUTUBE

если%!% == google.com Гото GOOGLE

еще Гото ELSE

Btw, это только пример. Ну, проблема в том, что еще не работает правильно ... Idk, как я должен это делать, поэтому я надеюсь, что кто-то может помочь ...

+1

Почему бы просто не избавиться от всего? Если предыдущие операторы if не запускаются как истинные и делают код переходом на один из ярлыков, просто 'goto ELSE' – Kyle

+0

Вы обнаружите, что'! 'Является проблематичным символом, когда включено замедленное расширение, поэтому может быть лучше для выбора '$' или '#' или '@' даже. – foxidrive

ответ

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 

Вы должны изучить партию, прежде чем выполнять пакетные скрипты.

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 
) 
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 
+0

+1, это действительно хорошо! – Endoro

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 и все, что не отправит вас на сайты.

Смежные вопросы