Я пытаюсь извлечь из набора текстовых файлов строку, расположенную на 2 строки ниже строки, соответствующей критериям поиска, и перенаправить вывод в файл csv.
Мне удалось сделать это для определенного текстового файла в наборе, но у меня возникают проблемы с написанием цикла For для пакетного сканирования каждого текстового файла в заданной папке.
Через этот я написал следующий код для сканирования определенного файла. Он отлично работает:
setlocal EnableDelayedExpansion
cd "myFolder"
if exist myOutput.csv del myOutput.csv
for /F "delims=:" %%A in ('findstr /B /N /C:"myCriteria" "myFile.txt"') do (
set /A LineBelow=%%A+2
set "LineBelow=!LineBelow!: "
)
(for /F "tokens=1* delims=:" %%A in ('findstr /N "^" "myFile.txt" ^| findstr /B "%LineBelow%"') do ^
echo %%B>>myOutput.csv)
start myOutput.csv
ENDLOCAL
Когда я попытался обобщить код в For Cycle для сканирования каждого txt в myFolder, я получил ошибку в Findstr: !LineBelow! получается пустая переменная...
Вот ошибочный For Cycle:
setlocal EnableDelayedExpansion
cd "myFolder"
if exist myOutput.csv del myOutput.csv
for %%F IN ("*.txt") do (
(
for /F "delims=:" %%A in ('findstr /B /N /C:"myCriteria" "%%F"') do (
set /A LineBelow=%%A+2
set "LineBelow=!LineBelow!: "
))
(for /F "tokens=1* delims=:" %%A in ('findstr /N "^" "%%F" ^| findstr /B "!LineBelow!"') do ^
echo %%B>>myOutput.csv))
start myOutput.csv
ENDLOCAL
Может ли кто-нибудь помочь мне в исправлении этого кода? Спасибо