Chamar um arquivo em lote com uma variável de string como um parâmetro mostra apenas a primeira palavra da string

0

Estou tentando chamar um arquivo em lote ao enviar uma variável de string, mas quando tento obtê-lo, ele mostra apenas a primeira palavra da string.

antes de chamar o outro programa i echo para verificar se está definido e vejo toda a frase (primeiro arquivo):

set /p input=
echo %input%
call test.bat %input%

mas quando tento obtê-lo (segundo arquivo):

set output=%1
echo %output%

mostra apenas a primeira palavra.

O que preciso fazer para obter a frase inteira de um arquivo em lote para outro usando um comando de chamada?

    
por 7h3w1z4rd 06.09.2017 / 10:41

3 respostas

0

O motivo é simples.

Quando você trabalha com um arquivo batch, cada parâmetro é acessado através de% 1,% 2,% 3 ... até 9 parâmetros.

Os parâmetros são separados por um espaço, portanto, se você inserir mais palavras e separá-las com um espaço, elas se tornarão, em essência, parâmetros múltiplos. A solução é simples, coloque as% input% dentro de aspas para fazer o batchfile entender que ele deveria ser um parâmetro. Seu script se torna:

set /p input=
echo %input%
call test.bat "%input%"
    
por 06.09.2017 / 10:52
0

A solução do LPChip parece boa e se você quiser remover as aspas, dê uma olhada neste post: link

    
por 06.09.2017 / 11:08
0

Se a entrada contiver espaços, você deverá inseri-la usando aspas para permitir que o lote capture o parâmetro inteiro como um, contendo espaços.

Agora, no segundo lote, você só precisa adicionar o símbolo ~ ao parâmetro da seguinte forma:

REM Note the use of ~ after the percentage symbol

set output=%~1
echo %output%
    
por 13.12.2017 / 22:26