我有一堆包含一些内容的文本文件。首先,我想在全球范围内对线路进行编号。然后我提取了在某处重复的所有行(在任何给定文件中至少出现两次)。但是现在我需要用该行第一次出现的文件名和行号来标记所有这些行。现在有趣的部分 - 它需要是一个 Windows 批处理文件,使用本机 Windows 工具。这就是为什么我一开始就有这个问题。
所以,总结一下:
我有一个文件A,据说它们中的每一个在给定的文件集中至少出现两次。
我需要搜索这些文件并标记A中所有出现的给定行文件中标记所有出现的给定行,其中该行首先出现在该文件中的行号 -file name
这是我努力编号行和格式化文件的代码。
@echo off
setlocal EnableDelayedExpansion
set /a lnum=0
if not [%1]==[] pushd %1
for /r %%F in (*.txt) do call :sub "%%F"
echo Total lines in %Files% files: %Total%
popd
exit /b 0
:Sub
set /a Cnt=0
for /f %%n in ('type %1') do (
set /a Cnt+=1
set /a lnum=!lnum!+1
echo ^<!lnum!^> %%n >> %1_ln.txt && echo ^<!lnum!^> >> %1_ln.txt && echo. >> %1_ln.txt
)
set /a Total+=Cnt
set /a Files+=1
echo %1: %Cnt% lines