hoko
Goto Top

Text mit einer .bat vor und nach einer Zeichenkombination abschneiden

Hallo,
ich hoffe mir kann einer der Experten helfen.

Ich bekomme aus einen Programm eine Textzeile als Variable übergeben. Jetzt brauche ich aber einen Teil aus dieser Textzeile.
Beispiel:
1234567 d adfe yx4 dieser text wird benötigt yx6 deiosd yx8 keo
oder
456721d qwse yx4 dieser text wird benötigt yx9 deios yx10 dkeo

Es wird also der Text zwischen "yx4" und dem nächsten folgenden "yx*" zur Übergabe an ein anderes programm benötigt.

Wie kann ich das mit einer Batch-Datei erledigen.

Danke für euere Hilfe

hoko

Content-ID: 113806

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

Ausgedruckt am: 22.11.2024 um 00:11 Uhr

bastla
bastla 14.04.2009 um 15:06:12 Uhr
Goto Top
Hallo hoko!

Du könntest es damit versuchen:
@echo off & setlocal
set "Von=yx4"  
set "Bis=yx"  
set G=%temp%\GetPart.vbs
>%G% echo Set a=WScript.Arguments:T=a(0):Von=a(1):L=Len(Von):Bis=a(2):Start=InStr(T,Von):If Start^>0 Then Start=Start+L:Ende=InStr(Start,T,Bis)-Start:If Ende^>Start Then WScript.Echo Mid(T,Start,Ende)

set "var=1234567 d adfe yx4 dieser text wird benötigt yx6 deiosd yx8 keo"  
set varNeu=
for /f "delims=" %%i in ('cscript //nologo %G% "%var%" "%Von%" "%Bis%"') do set "varNeu=%%i"  
if defined varNeu (echo #%varNeu%#) else (echo Teistring konnte nicht gebildet werden!)
Die "Einrahmung" der Ausgabe durch "#" soll zeigen, dass auch die Leerzeichen in die neue Variable übernommen werden - falls dies nicht gewünscht wäre, müsste die folgende Zeile 5 verwendet werden:
>%G% echo Set a=WScript.Arguments:T=a(0):Von=a(1):L=Len(Von):Bis=a(2):Start=InStr(T,Von):If Start^>0 Then Start=Start+L:Ende=InStr(Start,T,Bis)-Start:If Ende^>Start Then WScript.Echo Trim(Mid(T,Start,Ende))
Noch ein Hinweis: Es wird bei der Suche nach den Kennzeichen für "Von" und "Bis" Groß-/Kleinschreibung unterschieden - falls sich nicht beide Kennzeichen (in der richtigen Reihenfolge) finden lassen, wird ein leerer String zurückgegeben, was dazu führt, dass %varNeu% danach nicht existiert ("not defined" ist).

Grüße
bastla
hoko
hoko 14.04.2009 um 15:30:11 Uhr
Goto Top
hallo bastla,

das funktioniert schon ganz gut. jetzt habe ich noch das Problem, dass der Var-Teil (aus Zeile 7) ja mit übergeben wird. Also z.B. durch den Aufruf:

trennen.bat "1234567 d adfe yx4 dieser text wird benötigt yx6 deiosd yx8 keo"

Das ändert sich dann entsprechend bei jedem Aufruf. Kann diese Zeile irgendwie mit in die Bat. Datei als Variable eingefügt werden?

Danke & Gruß
hoko
bastla
bastla 14.04.2009 um 15:41:04 Uhr
Goto Top
Hallo hoko!

Du kannst einfach Zeile 7 durch
set "var=%~1"
ersetzen.

Grüße
bastla
hoko
hoko 14.04.2009 um 15:46:04 Uhr
Goto Top
Hallo bastla,

Danke, das war es was ich geuscht habe. face-smile

Gruß
hoko