Seite 1 von 1

Opsi Textdatei auslesen

Verfasst: 10 Dez 2018, 15:10
von luca_de
Hallo zusammen,

ich möchte gerne mithilfe eines Opsi Skriptes eine Textdatei auslesen und den String, welchen ich zurückbekomme entweder mittels Regular Expression oder mithilfe einer Teilung des Strings bearbeiten.
Ich benötige immer die zwei letzten Zeichen aus dem String.

Wie kann ich das machen?

Folgendes funktioniert bereits allerdings muss ich nun noch die letzten beiden Zeichen in einen extra String bekommen

Code: Alles auswählen

[ACTIONS]

DefStringList $HF_STRING$
set $HF_STRING$ = loadtextfile('C:Test\Test.txt')
Oder ist es möglich eine DefVar, welche den Wert 10 hat um eins zu erhöhen oder zu dekrementieren, damit ich strPart nutzen kann?

Re: Opsi Textdatei auslesen

Verfasst: 10 Dez 2018, 17:13
von hobbyist
Hallo,

schau DIr mal das Kapitel 9.6. Umgang mit Zahlen [W/L], insbesondere die Funktion calculate. Damit könntest Du dann mit den Funktionen strLength und strPart entsprechendes ermitteln, um den gewünschten Teil zu erhalten. Nur vorab zur Sicherheit, bevor die Frage kommt: Eine StringList ist kein String!

Für manche Aufgaben kann es auch einfacher sein, ein separates Skript/Programm zu programmieren, das ins Paket zu packen und dann den Rückgabewert in OPSI zu verarbeiten.

Ich denke aber mit ein bisschen Fantasie und Funktionskunde sollte Dein Vorhaben so auch mit OPSI gelingen.

Viele Grüße

Re: Opsi Textdatei auslesen

Verfasst: 11 Dez 2018, 18:56
von bernd670
Hallo,

evtl. könnte es so funktionieren (nicht getestet)

Code: Alles auswählen

[ACTIONS]
DefVar $lsc$ 

; Gibt die rechten $noc$ Zeichen des angegeben Strings $string$ zurück
; ist $noc$ keine Zahl oder $noc$ größer als strLength wird $string$ zurückgegeben
DefFunc strRight (val $string$ : string, val $noc$ : string ) : string
  DefVar $startPos$ = "1"
  DefVar $length$ = strLength($string$)
       
  If isNumber($noc$)
    If $length$ INT>= $noc$
       Set $startPos$ = calculate($length$ - $noc$ + 1)
    EndIf
  EndIf
  
  If $startPos$ = "1"
    Set $result$ = $string$
  Else
    Set $result$ = strPart($string$, $startPos$, $noc$)
  EndIf
          
EndFunc

; letzten 2 Zeichen aus der Textdatei
Set $lsc$ = strRight(takeString(-1,loadtextfile('C:Test\Test.txt')), "2")