Как увеличить значение в текстовом файле с помощью обычной командной строки Windows? - PullRequest
5 голосов
/ 03 сентября 2008

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

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

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

Ответы [ 4 ]

11 голосов
/ 03 сентября 2008

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

@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 находятся в одном каталоге.

2 голосов
/ 03 сентября 2008

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

date >> builddates.txt

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

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

2 голосов
/ 03 сентября 2008

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

[int](get-content counter.txt) + 1 | out-file counter.txt
1 голос
/ 03 сентября 2008

Если вы не против запустить Microsoft Script для Windows, тогда этот 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...