6

При установке такой переменной:

> set foo=hello && echo test

тогда значение переменной foo содержит лишний ненужный пробел:

> echo "%foo%"
"hello "

Как я могу предотвратить это дополнительное пространство? Он исчезает, когда я пропускаю тестовую часть && echo test , но мне нужно использовать && по другим причинам.

4 ответа4

10

Вы можете сделать это

установить "foo = hello" && echo test

4

set foo=hello&& echo test

отлично работает здесь,

echo "%foo%"

печать

"hello"

:)

1
set "foo=hello"

Это помогло мне в этой куче

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%

Мне потребовалось некоторое время, чтобы понять, как удалить пробел в конце переменной. Надеюсь, это поможет кому-то

1

Как указано в других ответах, пробелы в конце команды set являются значительными, поэтому, если вы введете

set foo=hello & echo test
или даже
set foo=hello&blank;

(где &blank; представляет пробел), %foo% устанавливается в строку из шести символов h , e , l , l , o ,   ,

У меня была аналогичная проблема с пространством , когда echo ИНГ строку выходного файла.  Не удивительно (в свете вышесказанного),

echo hello >myfile

записывает шестизначную строку h , e , l , l , o ,   (плюс CR и LF) в файл, в то время как

echo hello> myfile

не включает пространство  Но пробелы в конце командной строки остаются проблемой.  Если по какой-то причине вы говорите

echo hello>myfile&blank;
тогда вы получите пробел в конце вывода.  Когда я удалил пробел после имени файла, пробел в конце вывода исчез.

Странно, но это сработало для меня.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .