keksegriller
Goto Top

Mit batch zeilen auslesen

Hallihallo,

ich fange gerade an mit batch-Dateien zu arbeiten und komme trotz stundenlangem ausprobieren und googlen leider nicht mehr allein weiter. Folgendes Problem tut sich mir auf:

@
echo off & setlocal

for /f "delims=" %%i in ('findstr /v /n "random" C:\test\test1.log^|findstr "^3:"') do @Set "ln=%%i"  
echo %ln:~5,33% > C:\test\ausgabe.log
set x=%ln:~3,1%

for /f "delims=" %%i in ('findstr /v /n "random" C:\test\test2.log^|findstr "^%x%:"') do @Set "ln=%%i"  
echo %ln:~1,33% >> C:\test\ausgabe.log

Der Plan war es mit dem ersten for eine Zeilennummer herauszufinden um diese Zeile aus einer anderen .log mit dem zweiten for auszulesen. In meiner batch habe ich die Erfahrung gemacht dass der Befehl bei einigen .log-Dateien einwandfrei funktioniert(aber auch nur das erste for), bei einer anderen .log im gleichen Ordner etc. aber nicht.

test1.log :
5555555555
6666666666
7777777777
8888888888
1111111111
2222222222
3333333333
4444444444

test2.log:
aaaaaaaaaa
bbbbbbbbbb
cccccccccc
dddddddddd
eeeeeeeeee
ffffffffff
gggggggggg
hhhhhhhhhh

mit test1.log und test2.log wollte ich als ausgabe.log eigentlich folgendes erzeugen(Abweichungen bei welchem Zeichen die Ausgabe beginnt sind zu übersehen ;) ):
ausgabe.log:
77777
gggggggggg

erhalte aber:

ECHO ist eingeschaltet (ON).
: 

was läuft hier so verkehrt?=p

Über baldige Hilfe würde ich mich sehr freuen,

keksegriller

Content-Key: 312759

Url: https://administrator.de/contentid/312759

Printed on: April 18, 2024 at 14:04 o'clock

Member: timlg07
Solution timlg07 Aug 21, 2016 at 08:39:26 (UTC)
Goto Top
morgen keksegriller,

der Ausgabe nach zu schließen ist die Variable ln nicht definiert.
Was sind denn die Unterschiede zwischen Deinen log Dateien?

Leider bin ich in findstr kein Profi und finde den Fehler falls er darin liegt nicht.
Könntest statt random vielleicht $$$ oder ähnliches suchen, falls random in der log enthalten ist.

Lg Tim
Member: keksegriller
keksegriller Aug 30, 2016 at 10:16:16 (UTC)
Goto Top
mit powershell gelöst. dort ist der umgang mit strings durch vorgefertigte cmdlets deutlich angenehmer.