O pipe para cmd | cmd
executará todos os comandos em seu fluxo de entrada.
- No primeiro caso, o fluxo de entrada conterá a saída de
fileX.cmd
, ou seja,dir
, e é isso que o| cmd
executará. - no segundo caso, o fluxo de entrada conterá
@echo dir
, portanto você deverá ver apenas o textodir
.
Eu recebo More?
se não houver uma nova linha no final do comando em fileX.cmd
. A razão para a diferença é que o shell principal assumirá o comando como concluído quando o EOF for alcançado, enquanto o cmd no final do pipe espera linhas completas. Se você quiser uma explicação de por que isso deveria acontecer, você terá que perguntar à Microsoft.
(A propósito, sua descrição se refere a fileX
, não fileX.cmd
, e você diz que contém uma única linha, enquanto eu suspeito que ela contém uma linha incompleta.)