2015-01-22 2 views
0

Я пишу командный файл, чтобы попытаться сделать что-то. как помощник или что-то в этом роде. поэтому я начинаю с изменения цвета, но я даже не могу этого понять, потому что оператор set/p продолжает повторяться.командный файл продолжает повторять оператор set/p

@echo off 
title Edmond 
set "action=" 
goto :aCheck 
:aPrompt 
set /p "action=What shall I do for you master?" 
:aCheck 
if not defined a goto :aPrompt 
echo %a% 


if /i "%action%" == "color" (
    echo stuff 
    :cl 
    set /p BC=What Should the background color be? 
    set /p FC=and the foreground color? 

    if %BC%==Black (
     set BC1=0 
    ) else if %BC%==Blue (
     set BC1=1 
    ) else if %BC%==Green (
     set BC1=2 
    ) else if %BC%==Aqua (
     set BC1=3 
    ) else if %BC%==Red (
     set BC1=4 
    ) else if %BC%==Purple (
     set BC1=5 
    ) else if %BC%==Yellow (
     set BC1=6 
    ) else if %BC%==White (
     set BC1=7 
    ) else if %BC%==Gray (
     set BC1=8 
    ) else if %BC%==LBlue (
     set BC1=9 
    ) else if %BC%==LGreen (
     set BC1=a 
    ) else if %BC%==LAqua (
     set BC1=b 
    ) else if %BC%==LRed (
     set BC1=c 
    ) else if %BC%==LPurple (
     set BC1=d 
    ) else if %BC%==LYellow (
     set BC1=e 
    ) else if %BC%==LWhite (
     set BC1=f 
    ) else (
     echo I'm sorry, I didn't exactly understand that. 
     echo By any chance could you say it again? 
     goto cl 
    ) 

    if %FC%==Black (
     set FC1=0 
    ) else if %FC%==Blue (
     set FC1=1 
    ) else if %FC%==Green (
     set FC1=2 
    ) else if %FC%==Aqua (
     set FC1=3 
    ) else if %FC%==Red (
     set FC1=4 
    ) else if %FC%==Purple (
     set FC1=5 
    ) else if %FC%==Yellow (
     set FC1=6 
    ) else if %FC%==White( 
     set FC1=7 
    ) else if %FC%==Gray (
     set FC1=8 
    ) else if %FC%==LBlue (
     set FC1=9 
    ) else if %FC%==LGreen (
     set FC1=a 
    ) else if %FC%==LAqua (
     set FC1=b 
    ) else if %FC%==LRed (
     set FC1=c 
    ) else if %FC%==LPurple (
     set FC1=d 
    ) else if %FC%==LYellow (
     set FC1=e 
    ) else if %FC%==LWhite (
     set FC1=f 
    ) else (
     echo I'm sorry, I didn't exactly understand that. 
    ) 
    echo Applying changes. 
    ping localhost -n 2 >nul 
    color %FC%%BC% 
) else (
    echo I'm sorry, I didn't exactly understand that. 
) 
pause 
exit 

Неужели кто-то не знает меня?

+1

'if not defined a goto: aPrompt' - где вы определяете' a'? Если вы не определяете его, проверка 'defined a' всегда будет ложной и вернется к': aPrompt'. Вероятно, вы хотите проверить вместо 'if not defined action'. –

+0

, так что я должен делать (вроде начался во вторник) –

+0

Я просто сказал вам это - посмотрите, что я написал о том, что вы, вероятно, хотели проверить в своем последнем комментарии. –

ответ

1

У вас есть недопустимый тест в if not defined (оба с a вы первоначально размещены, как вы не определили a, и код, который вы в настоящее время выложили на основе моего комментария, где вы проверить if not defined action a).

Вам необходимо проверить на if not defined action, как показано здесь (я добавил pause, который не был в вашем исходном коде, чтобы вы могли увидеть, прошел ли он тест или нет - проверьте его, не введя значение а затем введите один).

@echo off 
title Edmond 
set "action=" 
goto :Check 
:Prompt 
set /p "action=What shall I do for you master?" 
:Check 
if not defined action goto :Prompt 
echo %action% 
pause 
+0

В порядке я попробую. Спасибо! –

+0

теперь он говорит, что «а» не является признанной внутренней или внешней командой, действующей программой или командным файлом. ECHO выключен. и после паузы он выходит из –

+0

, говоря (в это время было неожиданно –

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