cced-de
Goto Top

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:
@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

Content-Key: 100120

Url: https://administrator.de/contentid/100120

Printed on: April 24, 2024 at 06:04 o'clock

Member: bastla
bastla Oct 24, 2008 at 07:44:48 (UTC)
Goto Top
Hallo cced-de!

Vielleicht solltest Du Dir einmal
dir /b /ad "H:\!!_Test\Test"
ansehen ...

Grüße
bastla
Member: cced-de
cced-de Oct 24, 2008 at 07:48:14 (UTC)
Goto Top
Au Man...
Warum einfach wenn´s auch umständlich geht face-smile oder... ich sehe den Wald vor lauter bäumen nicht mehr !!
Sorry ! und DANKEEE

P.s. aber rein interesse halber...
Wie löscht man die letzten x Zeilen aus einer Txt Datei, wenn man deren Inhalt nicht kennt ?
LG
CCED
Member: bastla
bastla Oct 24, 2008 at 13:41:32 (UTC)
Goto Top
Hallo cced-de!

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)  
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:
dir /ad|findstr /v "Datei(en) Verzeichnis(se),"
Wenn Du das noch mit einem "more +x" kombinierst, kommt zB sowas raus:
dir /ad|findstr /v "Datei(en) Verzeichnis(se),"|more +5
Oder natürlich, für Deinen obigen Zweck, die zweit-einfachste face-wink Variante:
dir /ad|findstr "<DIR>"
Grüße
bastla