Счетчик слов - Пакет

449
godzillamesel

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

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

0
Какой именно вопрос? Вы просите, чтобы сценарий был написан для вас? LotPings 5 лет назад 1
нет, я не прошу, чтобы сценарий был написан для меня, а главным образом, чтобы позволить мне увидеть альтернативы. Я довольно новичок в пакетном написании сценариев ... И я уже 20 часов гуглял свою задницу, но не могу понять. godzillamesel 5 лет назад 0
Поскольку git_commit.log в формате `.json`, используйте PowerShell для подсчета родителей` ((Get-Content. \ Git_commit.log | ConvertFrom-Json) .parents) .count` возвращает 19 здесь. Иначе мне непонятно, откуда взялся номер версии, в файле его нет? LotPings 5 лет назад 0

2 ответа на вопрос

2
Tenent Jason

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

@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 и манипулировать для выхода из цикла

Это ** не ** подсчитает несколько совпадений в строке и поймает возможные нежелательные варианты `grandparent` или` parent`. Это исключит варианты `findstr / i" \"commits.txt` LotPings 5 лет назад 1
1
godzillamesel

Мы наконец поняли это. Мы использовали скрипт на 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

(1) Нет такой вещи как «сценарий на С». Если это компилируемо, это называется программой. (2) Чем это лучше, чем ответ `findstr`? Учитывает ли это несколько вхождений в строке? Это игнорирует такие слова, как «очевидно», «дедушка и бабушка» и «воспитание детей»? G-Man 5 лет назад 0
я еще не тестировал программу подсчета, если она игнорирует «семейство» слова, на самом деле это не моя потребность, потому что она дает мне то, что мне нужно для моего обновления script.grandparent не появится. Но она подсчитывает, сколько вхождений слово появится в «лог-файле» godzillamesel 5 лет назад 0
протестировано сейчас, он принимает все слова с родителями в нем: / но, как я уже сказал, для моего использования это работает достаточно хорошо. godzillamesel 5 лет назад 0