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-Key: 90448

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

Printed on: April 25, 2024 at 13:04 o'clock

Member: Biber
Biber Jun 23, 2008 at 15:13:43 (UTC)
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
Member: meckatzermichel
meckatzermichel Jun 24, 2008 at 08:11:30 (UTC)
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)
Member: Biber
Biber Jun 24, 2008 at 13:16:13 (UTC)
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
Member: meckatzermichel
meckatzermichel Jun 25, 2008 at 11:14:14 (UTC)
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
Member: Biber
Biber Jun 25, 2008 at 11:37:59 (UTC)
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
Member: meckatzermichel
meckatzermichel Jun 30, 2008 at 11:30:15 (UTC)
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