Para responder à pergunta inicial, como @grawity apontado , =<
é apenas um pequeno formato para = <0
, que é perfeitamente sintaxe e funciona como esperado (uma vez testado corretamente ).
Portanto, não há nada de errado com a saída e foi apenas um obstáculo quando eu estava investigando um problema diferente.
Esse problema está relacionado a um trecho de código, semelhante a este:
@ECHO OFF
SETLOCAL
SET TEST=Fail
ECHO Pass>foo.txt
IF ERRORLEVEL 0 (
SET /P TEST=<foo.txt
ECHO %TEST%
)
Ao executar isso, esperava que a saída fosse Pass
, já que deveria ter sido lida de foo.txt
, mas a saída é Fail
. Eu suspeitava que isso se devesse à sintaxe "desconfigurada".
No entanto, como @Joey apontado , esse comportamento está relacionado a expansão atrasada .
Para que o código acima funcione, ele deve ser reescrito como:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET TEST=Fail
ECHO Pass>foo.txt
IF ERRORLEVEL 0 (
SET /P TEST=<foo.txt
ECHO !TEST!
)