我想制作一个批处理脚本,计算单词“parent”在文件中出现的次数,
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,因为我不知道 bitsadmin 是如何工作的,但如果你也知道它应该如何工作,请随意帮助我!因为我的脚本是基于批处理脚本的。
我希望输出到:"%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
答案1
你可以尝试这个:
@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
答案2
我们终于搞明白了。我们使用了我朋友编写的 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