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

问题描述 投票:0回答:1

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

第一个文件看起来像这样:

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

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

我得到了解决方案的部分工作,但没有让整个工作一起工作。挑战是findtr没有使用/ c进行计数和need()来保持一切顺序。

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

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

但在内部我需要一些更像是在stackoverflow中其他地方的gien的例子:

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
batch-file
1个回答
0
投票

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

@(For /F Skip^=1^ Delims^=^" %%A In (src\dict\strs_en.json) Do @(
    Echo="%%A" & FindStr/SMC:"%%A" C:\foo\bar\my\code\*.js & Echo=))>output.log
© www.soinside.com 2019 - 2024. All rights reserved.