Echo fügt Platz hinzu, wenn es mit einer Pipe verwendet wird
Während der Beantwortungdiese Frage Ich habe ein merkwürdiges Verhalten gefunden, für das ich keine Erklärung habe
for /f "delims=" %a in ('(for /l %z in (1,1,10^) do @echo %z^)') do @echo %a0
Sie sehen die Nummern 10..100. Fügen Sie jetzt einfach die Pipe hinzu, z. zusort
odermore
, was auch immer:
for /f "delims=" %a in ('(for /l %z in (1,1,10^) do @echo %z^)^|sort') do @echo %a0
Dazwischen werden Leerzeichen eingefügt%a
und0
! Sieht so aus, als würde ein Echo durch eine Pipe ein Leerzeichen hinzufügen, das leicht zu erkennen ist:
>_tempfile echo no space here
>_tempfile echo and here's a space|more
und selbst
>_tempfile <nul set /p =also a space|sort
(Verwendet wahrscheinlich Echo, um die Eingabeaufforderung zu drucken)
Dies geschieht nicht, wenn keine Ausgabeumleitung vorhanden ist (ob in eine Datei oder für einen Befehl). Ist es ein Fehler oder fehle ich etwas? Wie werde ich den Raum los? (neben dem dreckigen hack das letzte zeichen mit ausziehenvar:~0,-1
)