いくつかのコンテンツを含むテキストファイルがたくさんあります。最初に、行にグローバルに番号を付けたいと思いました。次に、どこかで重複しているすべての行を抽出しました(指定されたファイルのいずれかに少なくとも2回発生します)。しかし今、これらすべての行を、この行が最初に出現したファイル名と行番号でマークする必要があります。そして面白いのは、ネイティブの Windows ツールを使用した Windows バッチ ファイルである必要があることです。それが私がこの問題を抱えている理由です。
要約すると、次のようになります。
一意の文字列/行を持つファイルAがあり、それぞれが特定のファイル セットで少なくとも 2 回発生すると言われています。
これらのファイルを検索し、ファイルから特定の行をすべてマークする必要があります -行が最初に発生したファイル名 -このファイルの行番号
これは、行に番号を付けてファイルをフォーマットするための私のコードです。
@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