more +3 "file.txt" >"file.txt.new"
move /y "file.txt.new" "file.txt" >nul
Powyższe jest szybki i działa świetnie, z następującymi ograniczeniami :
- Znaki TAB są konwertowane na serię spacji.
- Liczba linii, które należy zachować, musi być mniejsza niż ~ 65535. WIĘCEJ zostanie zawieszony (poczekaj na naciśnięcie klawisza), jeśli przekroczony zostanie numer linii.
- Wszystkie linie zostaną zakończone przez powrót karetki i linefeed, niezależnie od tego, w jaki sposób zostały sformatowane w źródle.
Poniższe rozwiązanie wykorzystujące FOR/F z FINDSTR jest bardziej niezawodne, ale jest znacznie wolniejsze. W przeciwieństwie do prostego rozwiązania FOR/F zachowuje puste linie. Ale podobnie jak wszystkie rozwiązania FOR/F, jest ograniczona do maksymalnej długości linii nieco mniejszej niż 8191 bajtów. Ponownie, wszystkie linie zostaną zakończone przez powrót karetki i powrót do linii.
@echo off
setlocal disableDelayedExpsnsion
>"file.txt.new" (
for /f "delims=" %%A in ('findstr /n "^" "file.txt"') do (
set "ln=%%A"
setlocal enableDelayedExpansion
echo(!ln:*::=!
endlocal
)
)
move /y "file.txt.new" "file.txt" >nul
Jeśli masz mój handy-dandy JREPL.BAT regex text processing utility, następnie można użyć następujących za bardzo solidnego i szybkiego rozwiązania. To nadal spowoduje zakończenie wszystkich wierszy z powrotem karetki i wprowadzeniem wiersza (\ r \ n), niezależnie od oryginalnego formatu.
jrepl "^" "" /k 0 /exc 1:3 /f "test.txt" /o -
Możesz napisać \ n terminatory linii zamiast \ r \ n dodając opcję /U
.
Jeśli zachowujesz oryginalne terminatory linii, możesz użyć następującej odmiany. Spowoduje to załadowanie całego pliku źródłowego do pojedynczej zmiennej JScript, więc całkowity rozmiar pliku jest ograniczony do około 1 lub 2 gigabajtów (nie pamiętam dokładnej liczby).
jrepl "(?:.*\n){1,3}([\s\S]*)" "$1" /m /f "test.txt" /o -
Pamiętaj, że JREPL jest plik wsadowy, więc trzeba użyć CALL JREPL jeśli użyć polecenia w innym skrypcie.
[Zobacz ten link] [1]. Mam nadzieję, że zadziała dla Ciebie. [1]: http://stackoverflow.com/questions/418916/delete-certain-lines-in-a-txt-file-via-a-batch-file –
Arun Jain, który działa tylko wtedy, gdy wiesz, co jest w linii i nie mam błędu – kriegy