itchley
Goto Top

Batch schreibt unerwünschten Text

Moin zusammen,

innerhalb einer Batch habe ich unter anderem einen Abschnitt aus dem von einer Zwischendatei alle Zeilen entfernt werden sollen, die einen bestimmten Text enthalten. Das hat im Grunde bisher gut funktioniert, nur seit einer Änderung gestern im Script funktioniert eben das gar nicht mehr wie gewünscht. Alle Versuche, das wieder zu beheben sind ohne Erfolg.

Inhalt der Zwischendatei:
C:\>type "D:\Pfad~~~ ~~~Pfad\conf\Kontrolldatei.txt"  
192.168.253.21
Failed to get value of SNMP variable. Timeout.
Failed to get value of SNMP variable. Timeout.
Failed to get value of SNMP variable. Timeout.
---------------------------------------------------------------------------------------------
192.168.253.22
Failed to get value of SNMP variable. Timeout.
Failed to get value of SNMP variable. Timeout.
Failed to get value of SNMP variable. Timeout.
---------------------------------------------------------------------------------------------
192.168.253.23
Failed to get value of SNMP variable. Timeout.
Failed to get value of SNMP variable. Timeout.
Failed to get value of SNMP variable. Timeout.
---------------------------------------------------------------------------------------------

Aus der Zwischendatei sollen dann für die Zieldatei alle Zeilen die "Failed" enthalten entfernt werden...
C:\>find /V "Failed" "D:\Dropbox\DIVIS\Entwicklung Dokuvorlage\Dokuwerkzeug\conf\Kontrolldatei.txt"  

---------- D:\PFAD~~~ ~~~PFAD\CONF\KONTROLLDATEI.TXT
192.168.253.21
---------------------------------------------------------------------------------------------
192.168.253.22
---------------------------------------------------------------------------------------------
192.168.253.23
---------------------------------------------------------------------------------------------

Den Pfad habe ich gekürzt, deswegen die ~Tilde~. Wie man sieht ist in der Zieldatei eine Leerzeile, dann ein paar Bindestriche und der Pfad zur Kontrolldatei in Großbuchstaben nun drin.
Der Fehler ist auch nicht im Script selbst drin, sondern auch über die cmd nachzustellen; das Ergebnis fließt natürlich sonst in die Zieldatei.

Ich steh auf dem Schlauch und wäre für eine Lösung und auch das Verstehen der Ursache dankbar.


Gruß
Itchley

Content-ID: 2025054768

Url: https://administrator.de/forum/batch-schreibt-unerwuenschten-text-2025054768.html

Ausgedruckt am: 03.04.2025 um 03:04 Uhr

1915348599
Lösung 1915348599 28.02.2022 aktualisiert um 12:50:43 Uhr
Goto Top
Nimm findstr statt find oder pipe stattdessen den Inhalt an find.
findstr /ilv "failed" Kontrolldatei.txt >neu.txt  
bzw.
type Kontrolldatei.txt|find /v "failed" >neu.txt  

Denn wenn du find einen Dateinamen übergibst dann schreibt er den mit in die Ausgabe, wenn du stattdessen nur Inhalt an find über die pipe übergibst dann macht es das nicht. Alternativ kannst du auch das Ergebniss mit for-Loop und "skip" verarbeiten um den Header zu eliminieren, ist aber mit obigen Methoden nicht nötig s. oben.
Xerebus
Xerebus 28.02.2022 aktualisiert um 12:42:33 Uhr
Goto Top
Und wo ist die batch die nicht funktioniert?
Oder gib deinen Find einfach an eine neue txt durch mit >>
Itchley
Itchley 28.02.2022 um 13:10:26 Uhr
Goto Top
@1915348599

Besten Dank, läuft.
Hatte es vorher mit for gelöst

for /f "delims=" %%i in ("%kdf%") do IF NOT "%%i"=="" echo %%i>>"%Kdc%"  

Da tauchte der Fehler ja auf und daher habe ich gesucht, wie es wieder korrekt läuft.
Wie gesagt, es ging und ich habe an anderer Stelle was angepasst und dann kam das.

Danke Dir
Gruß
Itchley