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.