批量。使用循环搜索文件名中的关键字

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

我目前正在做一个小脚本,它应该是搜索目录中的特定关键字。我目前的代码如下。

dir /b /s *<keyword_1>* > results.txt
dir /b /s *<keyword_2>* >> results.txt
dir /b /s *<keyword_3>* >> results.txt
dir /b /s *<keyword_n>* >> results.txt

为了避免使用同一个命令来搜索N个额外的关键字 我想用一个循环来代替。由于我对批处理脚本很陌生,我已经发现for %%f在这种情况下可能会帮助我。大概会是这样的。

for %%f in (*keyword_1* *keyword_2* *keyword_3* *keyword_n*) do (
dir /b /s *<keyword_xy>* >> results.txt
)

我的问题是,现在我如何将循环中的命令 与相应的关键字连接起来?(首先是关键字1,然后是关键字2,以此类推...)?也许还有一种更简单的方法来完成这项工作:)

for-loop batch-file directory keyword
1个回答
1
投票

你可以做这样的事情。

for %%f in (*keyword_1* *keyword_2* *keyword_3* *keyword_n*) do (
dir /b /s %%f >> results.txt
)

更多信息 链接1链接2.


0
投票

完全不需要任何 的任务。

@Dir /B /S /A -D -S -L *keyword_1* *keyword_2* *keyword_3* *keyword_n* > results.txt

或必要时使用双引号。

@Dir /B /S /A -D -S -L "*keyword_1*" "*keyword_2*" "*keyword_3*" "*keyword_n*" > "results.txt"

我使用了额外的过滤器,只选择文件,而不是文件和目录,并排除带有系统属性的文件,以及那些是连接点的文件。要了解更多关于这些选项的信息,请打开命令提示符窗口,输入 dir /?,按 进入 键,并阅读所提供的信息。


鉴于你提供的例子。顾此失彼,我想你甚至可以使用。
@Dir /B /S /A -D -S -L "*keyword_*" > "results.txt"

顺便说一句,即使你打算使用... For 循环,你还是会尽可能的减少它。

@(For %%I In (1 2 3 n) Do @Dir /B /S /A -D -S -L "*keyword_%%I*") > "results.txt"

如果你能提供一个更真实的搜索字符串的例子 我们可以提供一个更有针对性的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.