Digitar uma resposta de 2 palavras faz com que o arquivo de lote trave. Como posso evitar isso?

2

Estou apenas escrevendo um pequeno programa bobo, mas o problema que estou tendo parece bastante genérico.

Aqui está a parte do código que está me causando problemas:

Atenção: o código abre uma pesquisa no google.

set /a c=0
:Longcat
CLS
Echo.
ECHO *****************************************************************
ECHO.
echo            How LONG is this cat?
echo.
echo *****************************************************************
Echo.
timeout 5 >nul
If %c%==0 start https://www.google.com/search?q=LongCat
set /a c=%c%+1
If %c%==10 goto incorrect
Set /p cat=
If %cat%==long goto correct
goto Longcat
:correct
Echo correct
pause
Goto geometric
:incorrect
echo incorrect
pause
goto geometric

Quando eu insiro respostas de palavra única para /p cat= , como big ou tall , o programa funciona bem (continua para GOTO LONGCAT ).

Mas assim que uso uma resposta de 2 palavras, como very big , recebo um erro:

big==long was unexpected at this time.

Alguém tem uma explicação ou uma correção para isso?

    
por Matthew 30.04.2016 / 07:43

1 resposta

4

Alguém tem uma explicação ou uma correção para isso?

If %cat%==long goto correct

Se você inserir very big , o comando acima se expandirá para:

If very big==long goto correct

que é um erro de sintaxe:

big==long was unexpected at this time.

Você precisa adicionar aspas ( " s) à sua comparação if para comparar entradas de várias palavras:

If "%cat%"=="long" goto correct

Agora, se você inserir very big , o comando acima se expandirá para:

If "very big"=="long" goto correct

que é um comando válido.

Leitura Adicional

por 30.04.2016 / 11:36