Como incremento um valor em um arquivo de texto usando a linha de comando normal do Windows?

StackOverflow https://stackoverflow.com/questions/40787

Pergunta

Gostaria de manter um "contador de compilação" para um dos meus projetos.Achei que uma maneira rápida e suja de fazer isso seria manter um arquivo de texto com um número simples e, em seguida, simplesmente invocar um pequeno script para incrementá-lo sempre que compilar.

Como eu faria isso usando a linha de comando normal do Windows?

Eu realmente não estou com vontade de instalar algum shell extra para fazer isso, mas se você tiver alguma outra sugestão super simples que possa fazer exatamente isso, ela também será naturalmente apreciada.

Foi útil?

Solução

Você pode tentar um arquivo em lote simples e antigo.

@echo off
for /f " delims==" %%i in (counter.txt) do set /A temp_counter= %%i+1
echo %temp_counter% > counter.txt

assumindo que count.bat e counter.txt estão localizados no mesmo diretório.

Outras dicas

Seria um novo shell (mas acho que vale a pena), mas do PowerShell seria

[int](get-content counter.txt) + 1 | out-file counter.txt

Eu sugiro apenas anexar a data e hora atual da compilação a um arquivo de log.

date >> builddates.txt

Dessa forma, você obtém uma contagem de construções por meio do número de linhas e também pode obter algumas estatísticas interessantes se se incomodar em analisar as datas e horários posteriormente.

O tamanho e o tempo extras para contar o número de linhas no arquivo serão insignificantes, a menos que você esteja fazendo iterações de projeto muito rápidas!

Se você não se importa em executar um script baseado no Windows da Microscoft, este jscript funcionará bem.basta salvá-lo como um arquivo .js e executá-lo no DOS com "wscript c:/script.js".

var fso, f, fileCount;
var ForReading = 1, ForWriting = 2;   
var filename = "c:\\testfile.txt";
fso = new ActiveXObject("Scripting.FileSystemObject");

//create file if its not found
if (! fso.FileExists(filename))
{
  f = fso.OpenTextFile(filename, ForWriting, true);
  f.Write("0");
  f.Close();
}

f = fso.OpenTextFile(filename, ForReading);
fileCount = parseInt(f.ReadAll());

//make sure the input is a whole number
if (isNaN(fileCount))
{
    fileCount = 0;  
}

fileCount = fileCount + 1;

f = fso.OpenTextFile(filename, ForWriting, true);
f.Write(fileCount);
f.Close();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top