Die beiden letzten Zeilen einer Textdatei löschen
Hallo,
Ich habe auf meine Frage schon diverse Antworten in der DB gefunden, aber keine funktioniert auf mein Problem.
Ich hoffe Ihr könnt mir da weiterhelfen.
Mein Anliegen:
Per Dir Befehl Ordner in eine Txt Datei schreiben lassen.
Dann die ersten 7 Zeilen und die je ersten 36 Zeichen jeder zeile löschen lassen.
Bis hierhin funktioniert alles.
Danach die letzten 2 Zeilen aus der Txt Datei löschen lassen, um die in der Txtdatei verbleibenden
Ordnernamen weiterzuverarbeiten.
Und das funktioniert bei mir leider nicht.
Hier mein Scriptansatz:
Ich hoffe Ihr könnt mir hier helfen.
LG CCED
Ich habe auf meine Frage schon diverse Antworten in der DB gefunden, aber keine funktioniert auf mein Problem.
Ich hoffe Ihr könnt mir da weiterhelfen.
Mein Anliegen:
Per Dir Befehl Ordner in eine Txt Datei schreiben lassen.
Dann die ersten 7 Zeilen und die je ersten 36 Zeichen jeder zeile löschen lassen.
Bis hierhin funktioniert alles.
Danach die letzten 2 Zeilen aus der Txt Datei löschen lassen, um die in der Txtdatei verbleibenden
Ordnernamen weiterzuverarbeiten.
Und das funktioniert bei mir leider nicht.
Hier mein Scriptansatz:
@echo off
cls
:: Listet alle Verzeichnisse in list.txt
DIR /AD "H:\!!_Test\Test" > list.txt
:: Liest Verzeichnisse aus List.txt,löscht unnütze Zeichen und schreibt in List.New
for /f "skip=7 usebackq delims=" %%i in ("list.txt") do call :ProcessLine "%%i"
goto KillLines
:PROCESSLINE
set "Zeile=%~1"
::ab 35. Buchstaben ausgeben
(echo %Zeile:~36%)>>"List.new"
goto :eof
:: Hier sollen die letzten 2 Zeilen mit beliebigem Inhalt aus List.New gelöscht werden.
:: Danach Soll List.New in List.txt umbenannt werden.
:KillLines
move "List.new" "List.bak"
for /f "delims=:" %%i in ('findstr /n $ "list.bak"') do set EntfZeile=%%i
for /f "tokens=1* delims=:" %%i in ('findstr /n $ "List.bak"') do if %%i neq %EntfZeile% echo.%%j>"List.bak"
move "List.bak" "List.txt"
:end
Ich hoffe Ihr könnt mir hier helfen.
LG CCED
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 100120
Url: https://administrator.de/forum/die-beiden-letzten-zeilen-einer-textdatei-loeschen-100120.html
Ausgedruckt am: 11.01.2025 um 03:01 Uhr
3 Kommentare
Neuester Kommentar
Hallo cced-de!
Die verbleibende Sicherungskopie in "%Datei%.%Bak%" kannst Du natürlich auch noch entfernen lassen.
Ansonsten gäbe es auch noch "findstr /v", soferne Du ein eindeutiges/verlässliches Suchkriterium für unerwünschte Zeilen hast, also etwa:
Wenn Du das noch mit einem "more +x" kombinierst, kommt zB sowas raus:
Oder natürlich, für Deinen obigen Zweck, die zweit-einfachste Variante:
Grüße
bastla
Wie löscht man die letzten x Zeilen aus einer Txt Datei, wenn man deren Inhalt nicht kennt ?
Etwa so:@echo off & setlocal
set "Datei=D:\List.txt"
set "Entf=2"
set "Bak=bak"
set Anzahl=0
for /f "delims=:" %%i in ('findstr /n "^" "%Datei%"') do set Anzahl=%%i
set /a Bis=%Anzahl%-%Entf%
if %Bis% leq 0 (
echo Die Datei "%Datei%" enthaelt zu wenig Zeilen!
goto :eof
)
move "%Datei%" "%Datei%.%Bak%"
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%Datei%.%Bak%"') do if %%i leq %Bis% (>>"%Datei%" echo\%%j)
Ansonsten gäbe es auch noch "findstr /v", soferne Du ein eindeutiges/verlässliches Suchkriterium für unerwünschte Zeilen hast, also etwa:
dir /ad|findstr /v "Datei(en) Verzeichnis(se),"
dir /ad|findstr /v "Datei(en) Verzeichnis(se),"|more +5
dir /ad|findstr "<DIR>"
bastla