我在这个特定的命令中有很多变量,有没有办法在不重写命令的情况下在其中添加许多变量?
dir c:\ / s / b / a |找到“我的文件”
例如,我想搜索“我的文件”和其他50件事。
感谢答案
答案 0 :(得分:2)
简而言之:不。您必须重写该命令,除非实际的特定命令接受多个参数(可能是变量)。在你的情况下,它不需要你重写它。
一种选择是使用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”都匹配。但是,你原来的解决方案也有这个问题。
如果您可以使您的搜索模式独一无二或者可能存在误报,那么这应该不是问题。但是请注意它。
答案 1 :(得分:2)
扩展Christian建议使用FINDSTR而不是FIND - 您可以简单地将所有50个搜索词放在文本文件中,并使用/G:"filename"
选项引用它们。
但有一个重要的警告 - 在搜索多个文字字符串时存在令人讨厌的FINDSTR错误。请参阅Why doesn't this FINDSTR example with multiple literal search strings find a match?。
如链接中所述,解决方法是使用/I
选项进行不区分大小写的搜索,或者使用带有/R
选项的正则表达式搜索词。
有关未记录的FINDSTR功能和错误的“完整”列表,请参阅What are the undocumented features and limitations of the Windows FINDSTR command?。
答案 2 :(得分:0)
你可以把它换成for循环:
for %i in ("my file" "second file") do dir c:\ /s /b /a | find %i