我需要编写一个Windows批处理脚本。 从给定目录开始,我需要检查具有给定文件名的每个文件中是否至少出现一个给定文本。
例如为: 从目录C:\ MyDir开始,我需要检查此目录和所有子目录中名称为" MyFile.txt"的文件。找到的每个文件必须至少出现一次文本" MyText"。
到目前为止我所拥有的是:
PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
String version = pInfo.versionName;//Version Name
int verCode = pInfo.versionCode;//Version Code
问题:
答案 0 :(得分:1)
阅读findstr /?
:搜索文件中的字符串。
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
[/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
strings [[drive:][path]filename[ ...]]
…
/S Searches for matching files in the current directory and all subdirectories.
…
下一个命令应该找到并显示所有匹配项:
FINDSTR /S /i /c:"MyText" C:\MyDir\MyFile.txt
下一个命令应该找到所有匹配项并仅显示(完全限定的)文件名:
FINDSTR /M /S /i /c:"MyText" C:\MyDir\MyFile.txt
答案 1 :(得分:1)
findstr /v
不能像预期的那样工作,所以你必须使用一个小技巧:使用findstr
并使用它的errorlevel来找到“找不到字符串”:
for /r %%a in (myfile.txt) do findstr /i "MyText" %%a >nul && echo yes: %%a|| echo no: %%a
for /r
是递归的(在子目录中搜索)(使用for
而不是findstr /s
一个接一个地处理每个文件,以便能够检查每个文件的errorlevel而不是完整的findstr /s
列表)&&
作为“如果上一个命令(findstr
)成功,那么”||
的作用是“如果上一个命令(findstr
)失败,那么”