Я пытаюсь использовать петлю for
за findstr
. Я хочу сделать var6 строку WHOLE, которая находится выше найденной строки Class=!var4!
. Я положил skip=-1
, но это не сработает (посмотреть назад на одну линию).Получить строку, которая появляется перед соответствующей строкой
Так что, если это выглядит следующим образом:
Name=Bismark #14
Class=var4
Я хотел бы var6 = Name = Bismarck # 14
findstr /b "Class=!var4!" "PosTime_Campaign_SCR.mis"
if not errorlevel 1 (
for /f "skip=-1 delims=" %%L in ('findstr "Class=!var4!" PosTime_Campaign_SCR.mis') do (
if not errorlevel 1 (
set var6=!var6!%%L
)
)
)
Я близко, но я не знаю, как сказать for
петля, чтобы посмотреть одну строку выше найденной строки findstr
.
Решение:
@echo off
set var4=BBBismarck
for /f "delims=" %%L in (PosTime_Campaign_SCR.mis) do (
if /i "%%L" equ "Class=%var4%" (
goto endloop
)
set "var6=%%L"
)
:endloop
echo %var6%
pause
Привет, там. Почти есть. Он возвращает часть строки выше, но не всю строку. Строки могут содержать пробелы. Таким образом, с кодом, который вы предоставили, и моим примером, он будет возвращать только «Name = Bismark», а не 'Name = Bismark # 14' –
очень умный и простой код. Это тоже быстро. Но как включить пробелы и специальные символы, как # на линии? –
исправлено. Благодаря вам. –