为什么 findstr 也在指定目录外的文件中搜索?

Why does findstr also search in files outside specified directory?

findstr 有一个简单的行为,我在 Windows 7 上不明白。

我 运行 管理员模式下的批处理文件(如果不是,它们根本不会启动),在几个不同的位置使用以下脚本:

@echo off
set local=%~dp0
echo %local%
REM to check that I am where I think I am
findstr /s /i /c:"stringtofind" %local%*.ext

当我从 "C:\Program files\~""C:\Program files (x86)\~" 中的某个位置 运行 此脚本时,输出包括 %local% 目录之外的 .ext 文件和带有 "stringtofind"。实际上所有匹配的文件都在硬盘上。

此行为不会出现在我可以测试的所有其他位置(基本上是 C:\ 目录中的任何其他位置),只有目录和子目录中的匹配文件出现。

是否有特定于 Program files 目录的内容?

试试改成

findstr /s /i /c:"stringtofind" "%local%*.ext"

在您提到的情况下,目录名包含空格,因此 findstr 正在查找多个参数。 "Using the quotes" 将 "strings containing spaces" 组为一个字符串。