meckatzermichel
Goto Top

auslesen der ersten 8 zeichen...

...nach einem delimiter, aber nur wenn bestimmte strings drin vorkommen.

hallo,

ich einen output der in etwa so aussieht:

Found VM:
moref:vm-13009
name:gettnt01
uuid:5030e4a4-a0f9-c6fe-2b15-1a6200754dc9
ipaddr:
[2008-06-23 14:55:54.426 'vcbVmName' 6000 warning] IP address not set.
Found VM:
moref:vm-3622
name:gettx732-testrechner
uuid:5038156e-d1c0-e2fa-4d42-ca40f795f898
ipaddr:
Found VM:
moref:vm-4406
name:gett0102
uuid:503029a4-5f84-a3ff-31fa-e31a79c73995
ipaddr:

usw.

mein ziel ist es, nur den hostnamen auszulesen.
also gettnt01 und gettx732 usw. aber nur wenn die hostnamen gettnt*, gettx* oder gettlx* heissen.
also nicht gett0102 usw.

ich hab schon mit
for /f "tokens=2 delims=:" %%i in ('find "name" vms.txt') do echo %%i >> ausgabe.txt
wenigstens nur noch die zeilen die überhaupt den hostname enthalten.
was mir fehlt ist irgendwie ne kombinierte find innerhalb der schleife.

kann jemand weiterhelfen?

danke und gruss
michel

Content-ID: 90448

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

Ausgedruckt am: 13.11.2024 um 22:11 Uhr

Biber
Biber 23.06.2008 um 17:13:43 Uhr
Goto Top
Moin meckatzermichel,

grad hab ich mich in einem anderen Thread so schön in den Becks-Kontext hineingeredet, und dann bringst Du mich allein durch Deinen Nick wieder auf Weizenbier-Ebene herab..... ernüchternd, sag ich Dir. face-wink

Zu Deiner Textdatei.
>for /f "delims=: tokens=2" %i in ('findstr /i /C:"name:gett" %temp%\mm.txt') do @echo %i  
gettnt01
gettx732-testrechner
gett0102
>for /f "delims=: tokens=2" %i in ('findstr /i /R "name:gett[a-z]" %temp%\mm.txt') do @echo %i  
gettnt01
gettx732-testrechner
...hier am Beispiel CMD-Prompt gefiltert nach allen Zeilen mit "name:gett*"
und danach mit dem regulären Ausdruck, der weiter einschränkt.
"name:gett[und dann a-z]"

Hilft das?

Grüße
Biber
meckatzermichel
meckatzermichel 24.06.2008 um 10:11:30 Uhr
Goto Top
hi biber,

jep das hilft.
eins fehlt mir noch.
ich möchte ja nur die ersten 8 zeichen des strings.
also das -testrechner oder ähnliches soll weg.

gruss
michel

also becks ist nicht meins. dann schon lieber meckatzer face-wink)
Biber
Biber 24.06.2008 um 15:16:13 Uhr
Goto Top
Moin meckatzermichel,

wenn Du den Inhalt der Variablen auf eine FESTE Länge kürzen willst, dann so:
[Beispiel am CMD-Prompt]
>set rechner=gettx732-testrechner
>echo %rechner:~0,8%
gettx732

Grüße
Biber
meckatzermichel
meckatzermichel 25.06.2008 um 13:14:14 Uhr
Goto Top
hallo biber,
vielen dank.
ich muss es trotzdem anders hin biegen, weil ich grad gesehen hab, dass es auch hostnames mit 8 oder 9 zeichen gibt.
so ein mist.

gruss vom see
michel
Biber
Biber 25.06.2008 um 13:37:59 Uhr
Goto Top
Moin meckatzermichel,

ich schrieb ja auch nur "wenn..".

Wenn es keine feste Länge ist, aber ein (oder mehrere) mögliche Trennzeichen, dann diese Mimik:
>set rechner=gettx732-testrechner
>for /f "delims=-" %i in ("%rechner%") do @echo %i  
gettx732

FOR /F ist schon ein- oder zweimal hier in Batch & Shell durchdekliniert worden.
Bei Bedarf ein bisschen stöbern.

Grüße
Biber
meckatzermichel
meckatzermichel 30.06.2008 um 13:30:15 Uhr
Goto Top
hi biber,

ja klar, das kenn ich.
ich wollte nur anmerken, dass dein feste-länge-tipp cool ist, ich aber doch anders machen muss.
das mit dem for hab ich ja vorher schon gemacht um den anderen senf in die tonne zu hauen.

danke und gruss
michel