Wortzähler - Stapel

594
godzillamesel

Ich möchte ein Batch-Skript erstellen, das die Zeiten zählt, zu denen das Wort "parent" in der Datei angezeigt wird.

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

Ich lade gerade diese Datei herunter mit:

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 

Diese Datei wird auch als "Update-Hinweis" für den Benutzer benötigt. Dieses Skript ist direkt an Powershell gegangen, da ich nicht weiß, wie Bitsadmin funktioniert, aber wenn Sie auch wissen, wie das funktionieren soll, dann ist mein Gast mein Gast, der mir hilft! Da mein Skript so aufgebaut ist, dass es nur ein Batch-Skript ist.

Ich möchte die Ausgabe an: "%programfiles%\DiscLovestory\sys\update\version.log"und auch in der Registrierung:

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

In beiden Ausgabeorten sollte es genügen, die Version wie folgt zu setzen: "x.xx" ohne Zitate.

Und wenn Sie das Skript nachverfolgen oder verwenden möchten, seien Sie mein Gast. Es ist Open Source an:https://github.com/godzillamesel/disclovestory

0
Was genau ist die Frage? Wollen Sie das Skript für Sie schreiben lassen? LotPings vor 6 Jahren 1
Nein, ich bitte nicht, das Skript für mich schreiben zu lassen, sondern hauptsächlich, um mir Alternativen anzeigen zu lassen. Ich bin im Batch-Scripting ziemlich neu. Und ich habe mich rund 20 Stunden lang damit beschäftigt, aber ich kann es nicht verstehen. godzillamesel vor 6 Jahren 0
Da git_commit.log im `.json`-Format vorliegt, verwenden Sie PowerShell für die Anzahl der Eltern (`(Get-Content. \ Git_commit.log | ConvertFrom-Json) .parents) .cents` gibt hier 19 zurück. Ansonsten ist mir unklar, woher die Versionsnummer kommen soll, gibt es keine in der Datei? LotPings vor 6 Jahren 0

2 Antworten auf die Frage

2
Tenent Jason

Sie können dies versuchen:

@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 

Referenz: wie man die Wortanzahl innerhalb einer Batch-Datei in MS DOS abruft und die Exit-Schleife manipuliert

Dadurch werden ** nicht ** mehrere Übereinstimmungen in einer Zeile gezählt und möglicherweise unerwünschte Varianten "Großeltern" oder "Eltern" abgefangen. Dies schließt die Varianten "findstr / i" aus. \"commits.txt" LotPings vor 6 Jahren 1
1
godzillamesel

Wir haben es endlich herausgefunden. Wir haben in C ein Skript verwendet, das ein Freund von mir gemacht hat. War nicht das ich gesucht habe, aber es funktioniert. `

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

Es wird zu https://github.com/godzillamesel/disclovestory/blob/master/scripts/sys/update/count.exe kompiliert, wenn Sie es benötigen. count.exe

(1) Es gibt kein "Skript in C". Wenn es kompilierbar ist, spricht man von einem Programm. (2) Wie ist das besser als die Antwort von findstr? Zählt dies mehrere Vorkommen in einer Zeile? Ignoriert es Wörter wie "anscheinend", "Großeltern" und "Eltern"? G-Man vor 6 Jahren 0
Ich habe das Count-Programm noch nicht getestet. Wenn es die "Familie" eines Wortes ignoriert, ist es nicht meine Notwendigkeit, denn es gibt mir das, was ich für mein Update-Skript benötige. grandparent erscheint nicht. Aber es zählt, wie viele Vorkommnisse das Wort enthält erscheint in der "Log-Datei" godzillamesel vor 6 Jahren 0
Jetzt getestet, nimmt es alle Wörter mit den Eltern in sich: / aber wie gesagt, für meinen Gebrauch funktioniert es gut genug. godzillamesel vor 6 Jahren 0