Contador de palavras - Lote

0

Eu quero fazer um script em lote que conte as vezes que a palavra "pai" aparece no arquivo,

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

Atualmente, estou baixando este arquivo com:

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

Ter este arquivo também será necessário como uma "nota de atualização" para o usuário. Este script foi direto para o powershell, já que não sei como funciona o bitsadmin, mas se você também sabe como isso deve funcionar, seja meu convidado para me ajudar! Como meu script é baseado em um script somente em lote.

Eu quero que a saída vá para: "%programfiles%\DiscLovestory\sys\update\version.log" e também no registro:

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

Em ambos os locais de saída, deve ser suficiente apenas colocar a seguinte versão: "x.xx" sem citações.

E se você quiser acompanhar o roteiro, ou usá-lo, seja meu convidado. É open-source em: https://github.com/godzillamesel/disclovestory

    
por godzillamesel 26.05.2018 / 13:01

2 respostas

1

Finalmente descobrimos. Nós usamos um script em C que um amigo meu fez. Não era eu estava procurando, mas funciona. '

#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);
}

Ele é compilado para link se você for precisar . count.exe

    
por 29.05.2018 / 08:13
2

Você pode tentar isto:

@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

Referência: como obter a contagem de palavras dentro do arquivo em lotes no MS-DOS e manipular para sair do loop

    
por 26.05.2018 / 13:12