批处理文件一次检索一行,然后遍历文件目录以查找与每行匹配的内容



我有一个包含键和值的文件,并希望逐步执行每个键,并查看该键是否至少在一个文件中至少出现一次(或提供计数)。

第一个文件如下所示:

"foo.bar" : "hello world",
"lorem.ipsum" : "a quick brown fox",
....

我想扫描子目录中的所有.js文件,看看是否使用了"foo.bar"并提供该键的计数;然后取下一个键"lorem.ipsum"并扫描子目录中的所有js文件以查看是否使用它,然后提供一个计数。

我让部分解决方案工作,但不能让整个事情同时工作。 挑战有 veen findstr 不使用/c 进行计数,需要 () 来保持一切井然有序。

我可以在外部迭代字符串文件的每一行

...
for /f "skip=1 delims=:" %%a in (src/dict/strs_en.json) do (
findstr /s %%a c:foobarmycode*.js
)

但在内部,我需要更像一个在堆栈溢出其他地方给出的示例:

for /F "delims=" %G in ('findstr /I /S /M "foo.bar" "%CD%*.js"') do @find /I /C "home." "%~G" | findstr /V /R "^$"

其中"foo.bar"实际上是我的%%a

最后,所需的输出将是(我只想知道使用什么和不使用什么)

"foo.bar"  2
"lorem.ipsum" 1
"dolor.et"  0

"foo.bar" 
- file1.js
- file2.js
"lorem.ipsum"
- file3.js
"dolor.et"
-
"test.me"
- file2.js
- file3.js

>output.log中的输出是否为您提供了运行此批处理文件后可以使用的内容:

@(For /F Skip^=1^ Delims^=^" %%A In (srcdictstrs_en.json) Do @(
Echo="%%A" & FindStr/SMC:"%%A" C:foobarmycode*.js & Echo=))>output.log

最新更新