tubo + um número de dígito não ecoa


0

Eu tenho um script que lê a contagem de linha do arquivo e define esse número na variável ROWCOUNT.

Então, para adicionar rodapé como este "F | 5" para arquivo file.txt com ROWCOUNTmenos cabeçalho eu faço a subtração e com eco enviá-lo para o arquivo, mas nessa linha não tenho certeza qual parte falhar como "^ |" deve imprimir tubo ainda na tela mostra F | apenas e o arquivo gerado está vazio.

Isso também deixa de ser um problema quando ROWCOUNT> 10

@echo off
set ROWCOUNT=7
set /A TT=ROWCOUNT-1
echo F^|%TT%>>C:\Users\file.txt
pause

Mesmo com echo off esta é a saída gráfica e o arquivo.txt está vazio:

F|
Press any key to continue . . .

Respostas:


0

Um número imediatamente antes do redirecionamento representa um identificador de arquivo. Quando você usa um redirecionamento como >>someFile, realmente significa 1>>someFile, onde 1 representa stdout. Há também 2 para stderr e 0 para stdin. Outras alças de arquivos podem ser definidas pelo seu código.

Seu código tem um número antes do redirecionamento, portanto, ele está sendo interpretado como um identificador de arquivo indefinido.

A solução é simplesmente mover o redirecionamento para a frente.

>>C:\Users\file.txt echo F^|%TT%

Outra opção é usar parênteses

(echo F^|%TT%)>>C:\Users\file.txt

A segunda opção (echo F ^ |% TT%) coloca também os parênteses em arquivo, mas o primeiro funcionou como um encanto! Obrigado pela ajuda!
bot20141209

@ bot20141209 - A segunda opção não deve colocar parênteses na saída se ela for digitada exatamente como mostrei, a menos que seu valor TT contenha ).
dbenham

Sim você está correto. anteriormente eu tinha escrito echo (F ^ |% TT%), então é por isso que os parênteses foram impressos.
bot20141209
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.