I'm trying to extract from a set of txt files the line placed 2 rows below the one matching search criteria and redirect output to a csv file.
I managed to do that for a specific txt file in the set, but I'm getting troubles in writing the For Cycle to batch-scan each txt in a given folder.
Through this, I wrote the following code to scan a specific file. It works fine:
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
When I tried to generalize the code in a For Cycle to scan each txt in myFolder I got an error in Findstr: !LineBelow! happens to be an empty variable...
Here's the flawed 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
Could anybody help me in correcting this code? Thanks