我有很多变量要放在这个特定的命令中,有没有办法在不重写命令的情况下添加很多变量?
目录 c:\ /s /b /a | 找到“我的文件”
例如,我想搜索“我的文件”和其他 50 项内容。
感谢您的回答
我有很多变量要放在这个特定的命令中,有没有办法在不重写命令的情况下添加很多变量?
目录 c:\ /s /b /a | 找到“我的文件”
例如,我想搜索“我的文件”和其他 50 项内容。
感谢您的回答
简而言之:没有。您必须重写命令,除非特定命令确实接受多个参数(可能是变量)。在你的情况下它没有,所以你需要重写它。
一种选择是使用findstr
而不是find
. 您可以传递多个搜索模式:
dir c:\ /s /b /a | findstr /c:"my file" /c:"other" /c:"other 2" ...
不过,我不知道这可以扩展到“其他 50 件事情”的程度如何,但这样的解决方案可能没有。也许您可以使用正则表达式(检查findstr /?
)将文件名压缩为视图。
你也可以简单地做:
for /R c:\ %i in ("my file" "other" "other2") do @echo %i
但是,这两种解决方案都可以选择重复。他们基本上基于“包含”语义进行搜索。因此,“C:\foo\my file”和“C:\foo\bar\my file\something.txt”都将匹配。但是你原来的解决方案也有这个问题。
如果您可以使您的搜索模式独一无二或可以忍受误报,那么这应该不是问题。但是请注意它。
扩展 Christian 的建议以使用 FINDSTR 而不是 FIND - 您可以简单地将所有 50 个搜索词放在一个文本文件中,并使用该/G:"filename"
选项引用它们。
但是有一个重要的警告 -搜索多个文字字符串时有一个讨厌的 FINDSTR 错误。请参阅为什么这个具有多个文字搜索字符串的 FINDSTR 示例找不到匹配项?.
如链接中所述,解决方法是使用该选项进行不区分大小写的搜索/I
,或者使用带有该/R
选项的正则表达式搜索词。
有关未记录的 FINDSTR 功能和错误的“完整”列表,请参阅Windows FINDSTR 命令的未记录功能和限制是什么?.
您可以将其包装在 for 循环中:
for %i in ("my file" "second file") do dir c:\ /s /b /a | find %i