Я хочу сделать пакетный скрипт, который подсчитывает, сколько раз слово "родитель" появляется в файле,

http://api.github.com/repos/godzillamesel/disclovestory/commits

Я сейчас скачиваю этот файл с:

cd "$env:programfiles\DiscLovestory\sys\update" 
Remove-Item "git_commit.log" 
[Net.ServicePointManager]::SecurityProtocol =  tls12, tls11, tls" 
wget -O git_commit.log http://api.github.com/repos/godzillamesel/disclovestory/commits 
pause

Наличие этого файла также понадобится пользователю как «заметка об обновлении». Этот сценарий перешел прямо к powershell, так как я не знаю, как работает битсадмин, но если вы знаете, как это должно работать, будьте моим гостем, чтобы выручить меня! Поскольку мой сценарий основан на том, чтобы быть только пакетным сценарием.

Я хочу, чтобы вывод шел по адресу : "%programfiles%\DiscLovestory\sys\update\version.log" а также в реестре:

REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\DiscLovestory" /v DisplayVersion /t REG_SZ /d

В обоих местах вывода должно быть достаточно просто указать версию следующим образом: «x.xx» без кавычек.

И если ты хочешь следовать сценарию или использовать его, будь моим гостем. Это с открытым исходным кодом по адресу: https://github.com/godzillamesel/disclovestory

2 ответа2

2

Вы можете попробовать это:

@echo off
set /a COUNT=0
for /f %%i in ('findstr /i /c:"parent" commits.txt') do (
  set /a COUNT=COUNT + 1
)
echo "parent" words count: %COUNT% 
pause

Ссылка:как получить количество слов в пакетном файле в MS DOS и манипулировать для выхода из цикла

1

Мы наконец поняли это. Мы использовали скрипт на C, который сделал мой друг. Не было, я искал, но это работает. `

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LINESZ 1024

int main(int argc, char **argv)
{
    if(argc < 3){
        printf("Usage: count.exe <stack> <needle>\n");
        exit(0);
    }
    char* stack = argv[1];
    char* needle = argv[2];
    int count = 0;
    char buff[LINESZ];
    FILE *fin = fopen (stack, "r");
    if (fin != NULL) {
        while (fgets (buff, LINESZ, fin)) {
            if(strstr(buff,needle)){
                count += 1;
            }
        }
        fclose (fin);
    }
    printf("%d\n",count);
}

Он скомпилирован в https://github.com/godzillamesel/disclovestory/blob/master/scripts/sys/update/count.exe, если вам это нужно. count.exe

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .