跨文件的字符串比较

时间:2014-07-23 08:48:50

标签: windows batch-file

我有两个文件

file1看起来像这样

M:\admin_view\GemCommonApplications\AnalysisAndDesign\prototype
M:\admin_view\GemCommonApplications\AnalysisAndDesign\GeminiCommonTables.xls
M:\admin_view\GemCommonApplications\AnalysisAndDesign\EntryCapDBObjectDetails.xls
M:\admin_view\GemCommonApplications\AnalysisAndDesign\Security
M:\admin_view\GemCommonApplications\AnalysisAndDesign\ViewDataSpecification
M:\admin_view\GemCommonApplications\AnalysisAndDesign\Security\SUCS
M:\admin_view\GemCommonApplications\Deployment\ApplicationXML
M:\admin_view\GemCommonApplications\Deployment\BuildScripts
M:\admin_view\GemCommonApplications\Deployment\Build

file2看起来像这样

M:\admin_view\GemCommonApplications\AnalysisAndDesign\prototype\Common
M:\admin_view\GemCommonApplications\AnalysisAndDesign\prototype\images
M:\admin_view\GemCommonApplications\AnalysisAndDesign\prototype\Main
M:\admin_view\GemCommonApplications\AnalysisAndDesign\prototype\stylesheet
M:\admin_view\GemCommonApplications\AnalysisAndDesign\prototype\WalkThru
M:\admin_view\GemCommonApplications\Deployment\ApplicationXML\Batch\etc

现在我想检查file1中的每一行是否是file2行中的子字符串。 我想得到一个输出,就像file1中的所有行一样,它们不是file2中任何行中的子串。

示例:

M:\admin_view\GemCommonApplications\AnalysisAndDesign\prototype

不应该在输出中,因为它是第1-5行的子字符串

M:\admin_view\GemCommonApplications\Deployment\BuildScripts

应该在输出中,因为它不是file2中的子字符串。

我尝试过findstr / v,但输出看起来很奇怪。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

我不知道使用findstr搜索字符串并输出搜索词而不是匹配/不匹配行的方法。

我看到的唯一方法是在file1中针对file2测试每一行,如果找不到,则回显该行

@echo off
  for /f "delims=" %%a in (file1) do (
      findstr /l /b /i /m /c:"%%a" file2 >nul || echo %%a
  )

对于file1中的每一行,在文件2中搜索它,如果没有找到,则回显从file1读取的行