Como impedir que a linha de comando do Windows exiba uma linha vazia após cada comando?

3

Estou redirecionando a saída de um arquivo em lote para um arquivo de texto e não quero linhas em branco entre cada comando. Eu percebo que eu poderia pós-processar com um perl one-liner, mas preferiria não. Existe uma opção em algum lugar para suprimir essas linhas em branco desnecessárias?

    
por Umber Ferrule 18.01.2010 / 13:38

2 respostas

3

cmd sempre gera uma nova linha antes imprime seu prompt. Isso significa que algo como

> echo foo
foo

> _

sempre terá essa linha em branco, pois echo imprime uma quebra de linha automaticamente. No entanto, algo como

> set /p x=foo<nul
foo
> _

não terá a linha vazia no meio desde acima é o truque que permite imprimir coisas sem uma quebra de linha à direita. Ainda assim, o prompt aparece no início da próxima linha.

Isto é feito presumivelmente para ter o prompt sempre no início da linha, independentemente de como foi atrapalhada a saída do último comando. No tipo UNIX, é comum encontrar seu prompt no meio da linha, pois o último comando não imprimiu uma nova linha.

Mas não parece haver uma maneira de impedir o comportamento dele.

Você pode canalizar facilmente o que estiver fazendo por meio de

findstr /r /v /c:"^$"

embora.

    
por 18.01.2010 / 15:12
0

Isso realmente depende dos comandos que você está executando, pois eles podem ser configurados para fazer isso depois de serem executados - você gostaria de ver se eles têm uma opção não detalhada (no entanto, duvido que isso ajude).

A outra coisa a tentar seria colocar isso no começo:

@Echo off

Infelizmente, eu não acho que você vai ter muita sorte, pois acho que todos os comandos colocam uma quebra de linha depois que eles terminam (é o que retorna / traz o prompt de comando quando terminar.

Sua melhor aposta seria usar uma ferramenta de pós-processamento e simplesmente remover as quebras de linha, mas eu não sei uma boa recomendação.

    
por 18.01.2010 / 13:42