DIR 和 FINDSTR 搜索多个关键字并将每个关键字搜索的前 2 个搜索结果通过管道传输到 CLIP

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

在 Excel VBA 中,我尝试使用带有 DIR、FINDSTR 和 CLIP 命令的 WScript.Shell 在 C:\ 文件夹和子文件夹中搜索多个关键字。这是 DOS 命令的片段:

dir c:\ /s /b /ad|findstr /i "odac developer oracle" |findstr /n ^^|findstr "^[1-2]:" | CLIP

它是如何工作的:

DIR 结果通过管道传输到 FINDSTR,它会在结果上搜索多个关键字,然后再次通过管道传输到另一个 FINDSTR,它将行号作为结果的前缀。然后将这些重新表达为另一个 FINDSTR,最终减少到只有前 2 个搜索结果。

然而,TOP 2 结果仅来自所有关键字的全部结果,而不是来自单个关键字的结果。我不想根据关键字的数量在 VBA 循环中循环执行 DIR 命令。关键字是一个连接的单词字符串,由空格分隔。

1:c:\odac193jnj
2:c:\odac193jnj_x64

我想要的是这样的(每个关键字只有 2 个结果,即总共 6 个结果):

1:c:\odac193jnj
2:c:\odac193jnj_x64
1:c:\Program Files\Oracle SQL Developer 22.2
2:c:\Program Files\Microsoft Office\root\vfs\ProgramFilesX86\Microsoft SQL Server    
1:c:\Program Files (x86)\JNJ\Oracle Data Access Components (ODAC) v19.3
2:c:\Program Files (x86)\JNJ\Oracle Data Access Components (ODAC) x64 v19.3


I also do not want the 1:, 2: to be displayed or prefixed in the string.

任何帮助将不胜感激。

excel vba dos findstr wscript.shell
© www.soinside.com 2019 - 2024. All rights reserved.