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 . . .
bot20141209
fonte

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
dbenham
fonte
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