Evitar espaço extra ao definir variável na linha de comando do Windows

4

Ao definir uma variável como esta:

> set foo=hello && echo test

o valor da variável foo contém um espaço extra indesejado:

> echo "%foo%"
"hello "

Como evito esse espaço extra? Ele desaparece quando omito a parte && echo test , mas preciso usar && por outros motivos.

    
por wcoenen 20.10.2009 / 11:34

4 respostas

3

set foo=hello&& echo test

funciona bem aqui,

echo "%foo%"

imprime

"hello"

:)

    
por 20.10.2009 / 11:44
9

Você pode fazer isso

defina "foo = hello" & & teste de eco

    
por 24.04.2011 / 16:35
1

Como indicado pelas outras respostas, espaços no final de um comando set são significativos, então se você digitar

set foo=hello & echo test
ou até
set foo=hello␣

(onde ␣ representa um espaço), %foo% é definido para a string de seis caracteres h , e , l , l , o ,   .

Eu tive um problema semelhante com espaço quando echo ing uma string para um arquivo de saída. Não surpreendentemente (à luz do acima),

echo hello >myfile

grava a cadeia de seis caracteres h , e , l , l , o ,   (mais CR e LF) para o arquivo, enquanto

echo hello> myfile

não inclui o espaço. Mas os espaços no final da linha de comando ainda são um problema. Se, por algum motivo, você disser

echo hello>myfile␣
então você ganha um espaço no final da saída. Quando eu removi o espaço após o nome do arquivo, o espaço no final da saída desapareceu.

Estranho, mas isso funcionou para mim.

    
por 11.09.2017 / 17:54
1
set "foo=hello"

Isso me ajudou a acumular nessa linha

FOR /f "tokens=2 delims=><" %%a IN ('TYPE %GCV_CONFIG_FILE% ^| FIND "<%GCV_VALUE_NAME%>"') DO SET "%GCV_VARIABLE_NAME%=%%a" && echo %GCV_VARIABLE_NAME%=%%a >> %SessionLOG%

Demorei um pouco para descobrir como remover o espaço no final da variável. Espero que isso ajude alguém

    
por 30.01.2018 / 12:31

Tags