Как увеличить значение в текстовом файле с помощью обычной командной строки Windows?

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

Вопрос

Я бы хотел сохранить "счетчик компиляции" для одного из моих проектов. Я подумал, что быстрый и грязный способ сделать это - сохранить текстовый файл с простым номером, а затем просто вызывать небольшой скрипт, чтобы увеличивать его при каждой компиляции.

Как бы я поступил так, используя обычную командную строку Windows?

Мне не очень хочется устанавливать какую-то дополнительную оболочку, чтобы сделать это, но если у вас есть какие-то другие супер простые предложения, которые бы справились только с этим, они, естественно, тоже приветствуются.

Это было полезно?

Решение

Вы можете попробовать простой старый пакетный файл.

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

при условии, что count.bat и counter.txt находятся в одном каталоге.

Другие советы

Это будет новая оболочка (но я думаю, она того стоит), но из PowerShell это будет

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

Я бы предложил просто добавить текущую дату и время сборки в файл журнала.

date >> builddates.txt

Таким образом, вы получаете счетчик сборок через количество строк, и вы можете также получить некоторую интересную статистику, если вам будет сложно проанализировать даты и время позже.

Дополнительный размер & amp; время для подсчета количества строк в файле будет незначительным, если вы не делаете серьезно быстрые итерации проекта!

Если вы не возражаете против запуска скрипта на основе Microsoft, этот jscript будет работать нормально. просто сохраните его как файл .js и запустите его из dos с помощью " 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();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top