For loop 来自命令的批处理变量存储结果

For loop 来自命令的批处理变量存储结果,for-loop,batch-file,variables,findstr,For Loop,Batch File,Variables,Findstr,对我来说,这似乎是一个非常简单的问题,但我正在努力解决这个问题,还没有找到答案。 我的目标是统计文件中特定字符串的出现次数。 我使用以下命令执行或尝试执行此操作: for /f "tokens=2 delims=;" %%a in ('path to file with searchstring') do ( set count=('path to file I am searching in' find /c "%%a") if !count! NEQ 0 echo !count!

对我来说,这似乎是一个非常简单的问题,但我正在努力解决这个问题,还没有找到答案。 我的目标是统计文件中特定字符串的出现次数。 我使用以下命令执行或尝试执行此操作:

for /f "tokens=2 delims=;" %%a in ('path to file with searchstring') do (
   set count=('path to file I am searching in' find /c "%%a")
   if !count! NEQ 0 echo !count!
)
对我来说似乎很简单,但是当脚本退出时,第二行似乎是错误的。 我想将
find
的结果保存在一个var中,因为我只想输出非零结果。

下面是一个示例,为了更好地匹配单词,(它使用了您前面问题中的文件名):

@(对于/F“UseBackQTokens=2Delims=;”%%G In(“classID.txt”)Do@(设置“count=0”
对于“\”trc.txt“^”中(“^”%\uuuuu AppDir\uuuuuu%findstr.exe”/F%%H
)Do@(设置/A计数+=1)&设置本地启用延迟扩展
If!count!Gtr 0(Echo%%G:!count!)&Endlocal))&暂停
为了便于您更好地理解,在这里,它被完全括在多行中:

@Echo关闭
对于/F“UseBackQ令牌=2 Delims=;”%%G In(
“classID.txt”
)做(
设置“计数=0”
对于/F%%H英寸(
“^”“%\uuuu AppDir\uuuu%findstr.exe”/I/N“\”trc.txt“^”
)做(
设置/A计数+=1
)
SetLocal EnableDelayedExpansion
如果!计数!全球技术法规0(
回声%%G:!计数!
)
端部
)
暂停
以及将结果输出到名为
results.txt
的文件的完整括号示例:

@Echo关闭
(
对于/F“UseBackQ令牌=2 Delims=;”%%G In(
“classID.txt”
)做(
设置“计数=0”
对于/F%%H英寸(
“\”trc.txt“^”中的“^”“%\uuuuu AppDir\uuuuuu%findstr.exe”/
)做(
设置/A计数+=1
)
SetLocal EnableDelayedExpansion
如果!计数!全球技术法规0(
回声%%G:!计数!
)
端部
)
)>“results.txt”
以下是一个示例,为了更好地匹配单词,(它使用您前面问题中的文件名):

@(对于/F“UseBackQTokens=2Delims=;”%%G In(“classID.txt”)Do@(设置“count=0”
对于“\”trc.txt“^”中(“^”%\uuuuu AppDir\uuuuuu%findstr.exe”/F%%H
)Do@(设置/A计数+=1)&设置本地启用延迟扩展
If!count!Gtr 0(Echo%%G:!count!)&Endlocal))&暂停
为了便于您更好地理解,在这里,它被完全括在多行中:

@Echo关闭
对于/F“UseBackQ令牌=2 Delims=;”%%G In(
“classID.txt”
)做(
设置“计数=0”
对于/F%%H英寸(
“^”“%\uuuu AppDir\uuuu%findstr.exe”/I/N“\”trc.txt“^”
)做(
设置/A计数+=1
)
SetLocal EnableDelayedExpansion
如果!计数!全球技术法规0(
回声%%G:!计数!
)
端部
)
暂停
以及将结果输出到名为
results.txt
的文件的完整括号示例:

@Echo关闭
(
对于/F“UseBackQ令牌=2 Delims=;”%%G In(
“classID.txt”
)做(
设置“计数=0”
对于/F%%H英寸(
“\”trc.txt“^”中的“^”“%\uuuuu AppDir\uuuuuu%findstr.exe”/
)做(
设置/A计数+=1
)
SetLocal EnableDelayedExpansion
如果!计数!全球技术法规0(
回声%%G:!计数!
)
端部
)
)>“results.txt”

1。对于/F“usebackq tokens=2 delims=;”%%a in(“带有搜索字符串的文件路径”)do(…),将外部循环更改为
。2.第二行应为/F%%c的
(我正在“查找/c”%%a”中搜索的文件路径)do set“count=%%c”
。3.您应该预先初始化count变量,如
设置“count=0”
。4.在命令提示符窗口中键入
以获取/?
,然后(重新)阅读其帮助…谢谢@aschipfl,它似乎可以工作。你能解释一下什么是
^吗?不过,现在看来运行时间大幅下降,为
添加第二个
,但我会尝试一下,谢谢你关于
^注意:这会计算包含搜索字符串的行数,而不是搜索字符串的出现次数。如果搜索字符串在一行中出现多次,则将它们计为一(行)。对你来说可能重要,也可能不重要,但你应该意识到这一点。对于/F“usebackq tokens=2 delims=;”%%a in(“带有搜索字符串的文件路径”)do(…)
,将外部循环更改为
。2.第二行应为/F%%c的
(我正在“查找/c”%%a”中搜索的文件路径)do set“count=%%c”
。3.您应该预先初始化count变量,如
设置“count=0”
。4.在命令提示符窗口中键入
以获取/?
,然后(重新)阅读其帮助…谢谢@aschipfl,它似乎可以工作。你能解释一下什么是
^吗?不过,现在看来运行时间大幅下降,为
添加第二个
,但我会尝试一下,谢谢你关于
^注意:这会计算包含搜索字符串的行数,而不是搜索字符串的出现次数。如果搜索字符串在一行中出现多次,则将它们计为一(行)。对你来说可能重要,也可能不重要,但你应该意识到这一点。