set foo=hello&& echo test
funciona bem aqui,
echo "%foo%"
imprime
"hello"
:)
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.
Você pode fazer isso
defina "foo = hello" & & teste de eco
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 testou 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.
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