Во-первых, подсчитать количество строк, содержащихся в текстовом файле:
for /F %%C in ('^< "examplefile.txt" find /C /V ""') do set "COUNT=%%C"
Затем определить, сколько строк должны быть пропущены (все, кроме последних 10 строк, например):
if %COUNT% GTR 10 (set /A "SKIP=COUNT-10") else (set "SKIP=0")
Наконец, используйте more
command на самом деле пропустить следующие строки:
more +%SKIP% "examplefile.txt" | > nul findstr /L /I "Example Words" && (
rem Found
goto next
) || (
rem Not Found
goto home
)
Использование findstr
вместо find
указать несколько пространства -разделенное строки поиска или слова (например, Example
и Words
здесь). Используйте опцию /I
для поиска без учета регистра.
Обратите внимание, что more
ожидает ввода пользователем, когда входные файлы содержат 65535 или более строк. Он преобразует ПРОСТРАНСТВА в TABs, но это ничего не меняет, поскольку вы все равно не заинтересованы в них, так как ищете только слова.
Вот более сложный и менее эффективный подход опираясь на for /F
loop, используя также переменную COUNT
как получено выше.Он нуждается в skip
вариант for /F
, который строят следующим образом:
set /A "SKIP=COUNT-10"
if %SKIP% GTR 0 (set "SKIP=skip=%SKIP%") else (set "SKIP=")
Тогда есть вышеупомянутый for /F
петля:
for /F "%SKIP% delims=" %%L in ("examplefile.txt") do (
echo(%%L| > nul findstr /L /I "Example Words" && (
rem Found
goto next
)
)
ren Not Found
goto home
Каждая строка ищется индивидуально в цикле; как только встречается совпадение, выполняется goto next
; goto
разбивает контекст цикла, поэтому for /F
больше не выполняет какие-либо команды внутри своего тела.
Относительно того, что for /F
игнорирует пустые строки, а также такое начало с точкой с запятой (;
) по умолчанию. Некоторые специальные символы (^
, &
, (
, )
, "
, <
, >
, |
) может вызвать проблемы с echo
команды в трубе (|
).
Это последние ** 10 ** или последние ** 2 ** линии? просьба уточнить! – aschipfl
@aschipfl: Существует 10 типов людей: те, которые знают двоичную систему, и те, которые не ... – Aacini
Хе-хе, @ Аасини ... Надеюсь, что ОП разъяснит, хотя ... – aschipfl