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
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 113806
Url: https://administrator.de/contentid/113806
Printed on: April 25, 2024 at 17:04 o'clock
4 Comments
Latest comment
Hallo hoko!
Du könntest es damit versuchen:
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:
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
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!)
>%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))
Grüße
bastla