Zuerst die Anzahl der Zeilen in der Textdatei zählen:
for /F %%C in ('^< "examplefile.txt" find /C /V ""') do set "COUNT=%%C"
Dann bestimmen, wie viele Zeilen übersprungen werden (alle bis auf die letzten 10 Zeilen, zum Beispiel):
if %COUNT% GTR 10 (set /A "SKIP=COUNT-10") else (set "SKIP=0")
Schließlich verwenden die more
command, um tatsächlich die Linien überspringen:
more +%SKIP% "examplefile.txt" | > nul findstr /L /I "Example Words" && (
rem Found
goto next
) || (
rem Not Found
goto home
)
Verwenden findstr
statt find
auf mehr SPACE -separated Suchbegriffe oder Worte (wie Example
und Words
hier) angeben. Verwenden Sie die Option /I
, um die Groß- und Kleinschreibung nicht zu beachten.
Beachten Sie, dass more
Benutzereingaben erwartet, wenn die Eingabedateien 65535 oder mehr Zeilen enthalten. Es konvertiert SPACEs zu TABs, aber dies sollte nichts hier ändern, da Sie nicht für sie sowieso für die Suche interessiert sind, da Sie nur nach Wörtern suchen.
Hier ist ein komplizierter und weniger effizienter Ansatz auf einem for /F
loop angewiesen, auch mit den COUNT
Variable wie oben abgeleitet.Es braucht die skip
Möglichkeit for /F
, die wie folgt aufbauen:
set /A "SKIP=COUNT-10"
if %SKIP% GTR 0 (set "SKIP=skip=%SKIP%") else (set "SKIP=")
Dann gibt es die oben genannten for /F
Schleife:
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
Jede Zeile einzeln in der Schleife gesucht wird; sobald eine Übereinstimmung festgestellt wird, wird goto next
ausgeführt; goto
unterbricht den Schleifenkontext, daher führt for /F
keine Befehle mehr in seinem Körper aus.
Regard die for /F
leere Zeilen ignoriert, und auch solchen Anfang mit einem Semikolon (;
) standardmäßig. Einige Sonderzeichen (^
, &
, (
, )
, "
, <
, >
, |
) können Probleme verursachen mit dem echo
Befehl in dem Rohr (|
).
Sind es die letzten ** 10 ** oder die letzten ** 2 ** Zeilen? Bitte klären Sie! – aschipfl
@aschipfl: Existiert '10' Typen von Leuten: diejenigen, die das binäre System kennen und diejenigen, die nicht ... – Aacini
Hehe, @Aacini ... Ich hoffe das OP klärt aber ... – aschipfl