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

Printed on: April 19, 2024 at 09:04 o'clock

Member: it-fraggle
it-fraggle Dec 28, 2018 at 17:18:26 (UTC)
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?
Member: ElHutti
ElHutti Dec 28, 2018 at 18:34:57 (UTC)
Goto Top
Hallo,

Ich schreibe das Programm selber ;)

MfG
Member: rubberman
Solution rubberman Dec 28, 2018 at 18:59:53 (UTC)
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
Member: ElHutti
ElHutti Dec 28, 2018 at 19:26:43 (UTC)
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
Member: rubberman
Solution rubberman Dec 28, 2018 at 19:54:50 (UTC)
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
Member: ElHutti
ElHutti Dec 28, 2018 at 21:29:37 (UTC)
Goto Top
Hallo nochmals, danke sehr face-smile Passt perfekt.