elhutti
Goto Top

Bestimmte Zeilen einer Textdatei automatisch löschen

Hallo,

Ich möchte in einem Programm, das Einträge in eine TXT schreibt, immer nur eine bestimmte Anzahl an Einträgen haben. Also dass die alten automatisch gelöscht werden.

Kann mir bitte jemand sagen, wie das geht?

MfG

Content-Key: 396837

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

Ausgedruckt am: 29.03.2024 um 01:03 Uhr

Mitglied: it-fraggle
it-fraggle 28.12.2018 um 18:18:26 Uhr
Goto Top
Frag den Hersteller des Programms. ^^
Woher sollen wir das denn wissen? Du sagst ja nicht mal was das für ein Programm ist. Oder soll eins entwickelt werden? Oder ein Script?
Mitglied: ElHutti
ElHutti 28.12.2018 um 19:34:57 Uhr
Goto Top
Hallo,

Ich schreibe das Programm selber ;)

MfG
Mitglied: rubberman
Lösung rubberman 28.12.2018 um 19:59:53 Uhr
Goto Top
@echo off &setlocal

set /a "max=10"  
set "file=test.txt"  

for /l %%i in () do (
  set "line="  
  set /p "line=Neue Zeile: "  
  call :write
)

exit /b


:write
setlocal EnableDelayedExpansion
if not exist "!file!" >"!file!" type nul  

for /f %%i in ('type "!file!"^|find /c /v ""') do set /a "skip=%%i + 1 - max"  
if %skip% gtr 0 (
  <"!file!" >"!file!.~tmp" more +%skip%  
  >nul move /y "!file!.~tmp" "!file!"  
)

>>"!file!" echo(!line!  
endlocal
exit /b
Steffen
Mitglied: ElHutti
ElHutti 28.12.2018 um 20:26:43 Uhr
Goto Top
Hallo, vielen dank für den Code! Allerdings schaffe ich es irgendwie nicht, ihn in meinen vorhandenen Code einzupassen... Kannst du das vielleicht machen? Wäre nett von dir ;)

@echo off

:a
cls
echo Nachricht eingeben:
echo -------------------
echo.
set /p message=
echo %username%, %time%: %message%>>message.txt
goto a
Mitglied: rubberman
Lösung rubberman 28.12.2018 um 20:54:50 Uhr
Goto Top
@echo off &setlocal

set /a "max=10"  
set "file=message.txt"  

for /l %%i in () do (
  cls
  echo Nachricht eingeben:
  echo -------------------
  echo(
  set "message="  
  set /p "message="  
  call :write
)

exit /b


:write
setlocal EnableDelayedExpansion
if not exist "!file!" >"!file!" type nul  

for /f %%i in ('type "!file!"^|find /c /v ""') do set /a "skip=%%i + 1 - max"  
if %skip% gtr 0 (
  <"!file!" >"!file!.~tmp" more +%skip%  
  >nul move /y "!file!.~tmp" "!file!"  
)

>>"!file!" echo(!username!, !time!: !message!  
endlocal
exit /b
Mitglied: ElHutti
ElHutti 28.12.2018 um 22:29:37 Uhr
Goto Top
Hallo nochmals, danke sehr face-smile Passt perfekt.