echo dodaje przestrzeń podczas używania z rurą
Podczas odpowiadaniato pytanie znalazłem dziwne zachowanie, dla którego nie mam wyjaśnienia
for /f "delims=" %a in ('(for /l %z in (1,1,10^) do @echo %z^)') do @echo %a0
Zobaczysz numery 10..100, teraz po prostu dodaj potok, np. dosort
lubmore
, cokolwiek:
for /f "delims=" %a in ('(for /l %z in (1,1,10^) do @echo %z^)^|sort') do @echo %a0
Zostaną dodane spacje między%a
i0
! Wygląda na to, że echo czegoś w potoku dodaje spację, można to łatwo zobaczyć:
>_tempfile echo no space here
>_tempfile echo and here's a space|more
i nawet
>_tempfile <nul set /p =also a space|sort
(prawdopodobnie używa echa do wydrukowania monitu)
Nie dzieje się tak, gdy nie ma przekierowania wyjścia (do pliku lub polecenia). Czy to błąd, czy coś mi brakuje? Jak pozbyć się przestrzeni? (poza brudnym hackiem zrywania ostatniego bohateravar:~0,-1
)