Batch wenn X Zeilen in TXT dann exit/b?

1 Antwort

Du hast ein tolles Talent die klar auszudrücken...🤥 Dann musst Du Dich nicht wundern das Du förmlich mit Antworten überflutet wirst. (Was glaubst Du weshalb ich mich bisher mit Hilfestellungen zurückhielt?)

Entschuldige den schroffen Ton, aber Deine unklare Ausdrucksweise lässt zu viel Spielraum für verschiedene Auslegungen... (Es macht wahrlich keien Spaß dir zig Codebeispiele zu liefern, von denen vielleicht eines trifft...😤🤮)

Du wünscht Dir richtige Tipps? dann Liefere auch präzise Fragen möglichst mit Codebeispielen ,welche von Helfern kommentiert und ggf korrigiert werden.

Das kannst Du auch gleich als Übung betrachten. Nur wer ein Problem auf den Punkt beschreiben kann, kann es auch selbst lösen...

wir sind keine Codeschnipselfabrik...

einfach mitzählen, wenn du in die Datei schreibst.

@echo off
chcp 65001 >nul
setlocal enableDelayedExpansion


  rem  demo: einfach Anzahl  an Strings an Eco  übergeben, weches  diese  in eine Datei schreibt
for %%a in ("irgendwas","was Anderes","sonstwas","Rumpelheinzchen Grossmutter","Elfriedes Ziege") do (
    echo ein Text >>"blubb.txt"
      rem mitzählen...
    set /s "Zeilen+=1"
      rem wenn Limit schleife  verlassen...
    if !Zeilen! equ 3 goto :break
)
:break
echo Ich habe nach der %Zeilen%. Zeile aufgehört in die Datei zu schreiben.
pause

oder wenn die zu schreibenden Daten aus Verschiedenen unabhängigen Quellen kommen definiere eine eigenen Schreibbefehl welcher mitzählt.

@echo off
chcp 65001 >nul
setlocal enableDelayedExpansion
set "currentLines=0"
  rem Ausgabedatei "resetten"
call >"blubb.txt"

call :WriteMyFile "irgendwas"
call :WriteMyFile "was Anderes"
  rem du kannst auch anhand des Fehlerstatus von exit /b (0 oder >0)weitere  Entscheidungen treffen:
call :WriteMyFile "sonstwas" &&(echo  alles Normal)||(echo abgelehnt)
for %%a in ("Rumpelheinzchen Grossmutter","Elfriedes Ziege", "Schnätteredäng") do (
    call :WriteMyFile "%%~a"
)
call :WriteMyFile "sonstwas" &&(echo  alles Normal)||(echo abgelehnt)

pause
exit /b
::: Subroutines :::
:WriteMyFile
  rem erhöhe Aufrufzähler
set /a "currentLines+=1"
  rem ich habe keine Lust 185 Zeilen Spagetticode abzuarbeiten (darum  4)
if %currentLines% gtr 4  goto :machWasAndres
echo %~1 >>"blubb.txt"
echo %currentLines% geschrieben
exit /b 0
:machWasAndres
   echo  ich schreib  nich mehr in die  Datei
exit /b 1

Du kannst natürlich auch über mehrere Batchstarts akkumulierte Zeilen vor dem schreiben prüfen

@echo off
chcp 65001 >nul
setlocal enableDelayedExpansion
set "limit=10"
  rem ermittle Zeilenzahl einer Datei (finde  nicht nichts ...batchlogik)
for /f "skip=1 tokens=1 delims=[]" %%a in ('find /v /n "" "blubb.txt"') do (set /a "writtenLinesInFile=%%a")
echo %writtenLinesInFile% beschriebene Zeilen  in der Datei
if %writtenLinesInFile% lss %limit% (
    echo schreibe 1 Zeile in Datei
    echo irgendwas %date% %time% >>"blubb.txt"
    set /a "__dummy=limit-%writtenLinesInFile%-1"
    echo !__dummy! Zeilen können  noch geschrieben  werden
) else (
  echo das Maß ist voll
)
pause

bezüglich https://www.gutefrage.net/frage/mit-batch-1-zeile-aus-txt-loeschen ahne ich schon was Du willst, aber ich habe 0 Bock dier da zig Codebeispiele zu liefern poste was Du hast, , was das erwartete Ziel sein soll und ich schau mal was Verbesserungswürdig ist.

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren