Batch wenn X Zeilen in TXT dann exit/b?
Hallo, ich habe eine Batch die sollte etwas in eine TXT schreiben wenn diese aber 185 Zeilen hat, sollte etwas anderes passieren hier als Bsp. exit/b. Bitte nur Codebeispiele und richtige Tipps keine Klugscheißer die mir sagen nimm dir n Array und n String und verbinde es mit ner If-Schleife. Aber nur wenn die Datei 185 Zeilen hat, ansonsten soll das Script weiter/durchlaufen.
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.