Как использовать FINDSTR для поиска по определенной строке?
Требуемый код для findstr должен быть:
findstr /b /n "Hi" "example.txt"
Есть ли что-то, что может искать строку "Hi" только в заданной строке
Исходя из формулировки вашего вопроса, я собираюсь предположить несколько вещей:
- Вы хотите найти строку ТОЛЬКО и ничего более в конкретной строке
- Так как в вашем примере
FINDSTR
использует строку /B
you, то есть "Hi", находится только в начале строки, а затем после нее следует пробел для другого слова и т.д.
- Поскольку в вашем примере используется ключ
/N
, я собираюсь предположить, что вы используете его только для печати строк, в которых найдены совпадающие строки, поэтому вы можете запустить команду FINDSTR
чтобы получить ТОЛЬКО строку 15.
Вот несколько примеров команд (не пакетных) для выполнения этого
(Вы можете просто скопировать и вставить все эти строки после того, как ваша переменная будет подключена соответствующим образом для запуска, не будучи пакетным скриптом.)
SET SearchFile=C:\Path\example.txt
SET TmpSearchFile=%Temp%\~tmpSearch00.txt
SET String=Hi
SET LineNum=15
FINDSTR /B /N "%String%" "%SearchFile%" > "%TmpSearchFile%"
FOR /F "USEBACKQ TOKENS=2 DELIMS=: " %A IN (`"FINDSTR /B "%LineNum%:%String%" "%TmpSearchFile%""`) DO ECHO %~A
Это в основном передает первый FINDSTR
с номером строки совпадающей строки в начале всех строк во временный файл (если он существует, он перезаписывается). Затем он ищет во временном файле строку номера строки, плюс двоеточие и строку (т. Е. «15: Привет»). После этого я использовал цикл FOR /F
делающий colon
и space
delimiter
с token
2
. Затем он будет ECHO
строку ТОЛЬКО по запросу (замените ECHO
другой командой, если необходимо).