Im script ein befehl aus einer txt auf dem server holen
hallo ihr ich bins mal wieder gg nun mal wieder etwas anderes hier habe ich noch ein code gebastelt (dank euch gg)
nun hätte ich da eine frage
es wird für verschiedenen optionen eine txt datei auf dem server angelegt, dies wäre nicht nötig wenn ich in der lage wäre
wenn ich wüsste wie man aus einer txt datei eine bestimmte zeile auslesen könnte, hätte da jemand eine idee ?
nun hätte ich da eine frage
es wird für verschiedenen optionen eine txt datei auf dem server angelegt, dies wäre nicht nötig wenn ich in der lage wäre
wenn ich wüsste wie man aus einer txt datei eine bestimmte zeile auslesen könnte, hätte da jemand eine idee ?
Option Explicit
Dim oXL
Dim txt 'As String
Dim txt1 'As String
Dim txt2 'As String
Dim txt3 'As String
Dim txt4 'As String
Dim txt5 'As String
Dim WshShell
Dim iReturn
Dim sMessage, sTitel, sTitel1
txt = DownloadString("http://tspoint.......info.txt")
txt1 = DownloadString("http://tspoint......./info1.txt")
txt2= DownloadString("http://tspoint.......Programm.txt")
txt3= DownloadString("http://tspoint.......Fenstertitel.txt")
txt4= DownloadString("http://tspoint......./Fenstertitel1.txt")
txt5= DownloadString("http://tspoint.......test..txt")
'Fenstertitel
sTitel = txt3
sTitel1 = txt4
If not txt = "" Then
sMessage = txt
Set WshShell = CreateObject("WScript.Shell")
iReturn = WshShell.Popup(sMessage,txt5 , sTitel, vbInformation )
End If
Select Case iReturn
Case -1
sMessage = txt1
End select
'WshShell.Popup sMessage, ,dddd
If not txt1 = "" Then
'msgbox txt1
iReturn = WshShell.Popup(txt1,0 , sTitel1, vbInformation )
End If
Public Function DownloadString(ByVal URL) 'As String
Dim WebReq 'As MsXml2.XmlHttp
Dim FSO 'As Scripting.FileSystemObject
Set WebReq = CreateObject("WinHttp.WinHttpRequest.5.1")
Set FSO = CreateObject("Scripting.FileSystemObject")
WebReq.Open "get", URL, False
WebReq.Send
DownloadString = WebReq.ResponseText
End Function
If not txt2 = "" Then
StartApp txt2
End If
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 170840
Url: https://administrator.de/forum/im-script-ein-befehl-aus-einer-txt-auf-dem-server-holen-170840.html
Ausgedruckt am: 24.12.2024 um 01:12 Uhr
10 Kommentare
Neuester Kommentar
Hallo charmeur,
du könntest den Inhalt der Datei an den Zeilenumbrüchen in ein Array aufsplitten.
Grüße
rubberman
du könntest den Inhalt der Datei an den Zeilenumbrüchen in ein Array aufsplitten.
Option Explicit
Dim arrLines
Dim WshShell
Dim iReturn
Dim sMessage, sTitel, sTitel1
arrLines = DownloadArray("http://tspoint.......daten.txt")
If VarType(arrLines) <> vbEmpty Then
'Fenstertitel
sTitel = arrLines(3)
sTitel1 = arrLines(4)
If not arrLines(0) = "" Then
sMessage = arrLines(0)
Set WshShell = CreateObject("WScript.Shell")
iReturn = WshShell.Popup(sMessage, arrLines(5), sTitel, vbInformation)
End If
Select Case iReturn
Case -1
sMessage = arrLines(1)
End select
If not arrLines(1) = "" Then
'msgbox txt1
iReturn = WshShell.Popup(arrLines(1), 0, sTitel1, vbInformation)
End If
If not arrLines(2) = "" Then
'StartApp arrLines(2) ' Habe ich auskommentiert, weil es keine Routine "StartApp" in deinem Code gibt.
End If
End If
Public Function DownloadArray(ByVal URL) 'As String
Dim WebReq 'As MsXml2.XmlHttp
Dim FSO 'As Scripting.FileSystemObject
Set WebReq = CreateObject("WinHttp.WinHttpRequest.5.1")
Set FSO = CreateObject("Scripting.FileSystemObject")
WebReq.Open "get", URL, False
WebReq.Send
DownloadArray = Split(WebReq.ResponseText, vbLf)
End Function
rubberman
Hallo charmeur,
sowas lässt sich sehr einfach mit einem Objekt der Klasse für Reguläre Ausdrücke (RegExp) machen. Lege zu Testzwecken eine Datei mit folgendem Inhalt an:
Im folgenden Script den Pfad in Zeile 3 auf die eben erzeugte Datei setzen:
Die Datei wird erstmal komplett in eine Variable eingelesen (Zeile 7). In den Zeile 10 bis 14 wird die Suchfunktion aufgerufen, um den Wert zu ermitteln, der in der eingelesenen Datei bei der angegebenen Variable rechts vom Gleichheitszeichen steht.
In Zeile 30 wird das Suchmuster gesetzt. Der Ausdruck vor und nach dem Gleichheitszeichen wird durch die runden Klammern als Teiltreffer (Submatch) gekennzeichnet. Nachdem mit der
wird jedesmal höchstens ein Treffer gefunden, der in
Gruß
Friemler
sowas lässt sich sehr einfach mit einem Objekt der Klasse für Reguläre Ausdrücke (RegExp) machen. Lege zu Testzwecken eine Datei mit folgendem Inhalt an:
Info=Test
Info1=Test1
Programm=DasTolleProgramm.exe
Fenstertitel=Das Tolle Programm
Fenstertitel1=Ein Fenster des tollen Programms
Im folgenden Script den Pfad in Zeile 3 auf die eben erzeugte Datei setzen:
Const ForReading = 1
strInFile = "E:\Test.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objInFile = objFSO.OpenTextFile(strInFile, ForReading, False)
strContent = objInFile.ReadAll
objInFile.Close
strInfo = ReadVarValue(strContent, "Info")
strInfo1 = ReadVarValue(strContent, "Info1")
strProgramm = ReadVarValue(strContent, "Programm")
strFenstertitel = ReadVarValue(strContent, "Fenstertitel")
strFenstertitel1 = ReadVarValue(strContent, "Fenstertitel1")
WScript.Echo strInfo
WScript.Echo strInfo1
WScript.Echo strProgramm
WScript.Echo strFenstertitel
WScript.Echo strFenstertitel1
Function ReadVarValue(strFileContent, strVarName)
Dim objRegExp, colMatches
Set objRegExp = New RegExp
objRegExp.Global = False
objRegExp.IgnoreCase = True
objRegExp.Pattern = "(" & strVarName & ")=(.*)"
Set colMatches = objRegExp.Execute(strFileContent)
If colMatches.Count > 0 Then
ReadVarValue = colMatches(0).SubMatches(1)
Else
ReadVarValue = ""
End If
End Function
Die Datei wird erstmal komplett in eine Variable eingelesen (Zeile 7). In den Zeile 10 bis 14 wird die Suchfunktion aufgerufen, um den Wert zu ermitteln, der in der eingelesenen Datei bei der angegebenen Variable rechts vom Gleichheitszeichen steht.
In Zeile 30 wird das Suchmuster gesetzt. Der Ausdruck vor und nach dem Gleichheitszeichen wird durch die runden Klammern als Teiltreffer (Submatch) gekennzeichnet. Nachdem mit der
Execute
-Methode in Zeile 32 die Suche durchgeführt wurde, enthält die Variable colMatches
eine Collection mit allen Treffern. Da- in Zeile 28 durch setzen der
Global
-Eigenschaft aufFalse
festgelegt wurde, dass nur der erste Treffer gefunden werden soll, auf den das Suchmuster passt - es in der Datei für jeden Wert links des Gleichheitszeichens nur eine Zeile gibt, in der er auftritt
wird jedesmal höchstens ein Treffer gefunden, der in
colMatches
den Index 0 hat. Jeder Treffer, den Execute
in die zurückgelieferte Collection einträgt, hat die Eigenschaft SubMatches
, die Zugriff auf eine Collection mit Teiltreffern (Submatches) bietet. Der Wert hinter dem Gleichheitszeichen ist im Suchmuster der zweite eingeklammerte Block (.*
bedeutet "Alle beliebige Zeichen, beliebig oft"), hat in der SubMatches
-Collection also den Index 1. Deshalb kann mit colMatches(0).SubMatches(1)
in Zeile 35 auf diesen Wert zugegriffen werden; er wird als Funktionsergebnis zurückgeliefert.Gruß
Friemler
Hallo charmeur.
2. In der Fehlermeldung steht normalerweise auch die Zeilen- und Zeichennummer, wo der Fehler auftritt...
Grüße
rubberman
Zitat von @charmeur:
aber leuder bekomme ich den fehler 800A000D --- Typen unverträglich
muss ich etwas bei der txt Datei beachten bzw . wie sollte die aussehen?
1. Wir kennen den Inhalt deiner Textdatei(en) nichtaber leuder bekomme ich den fehler 800A000D --- Typen unverträglich
muss ich etwas bei der txt Datei beachten bzw . wie sollte die aussehen?
2. In der Fehlermeldung steht normalerweise auch die Zeilen- und Zeichennummer, wo der Fehler auftritt...
Grüße
rubberman
Dann beziehst du dich offensichtlich auf mein Script?!
Dann noch mal kurz zur Erklärung:
Das script splittet die Textdai in ein Array namens "arrLines"
In "arrLines(0)" findest du die erste Zeile der Datei ... in "arrLines(5)" die sechste Zeile (analog den ursprünglichen 6 Textdateien in deinem Ausgangsscript).
In Zeile 19 meines Scripts erwartet das Popup in "arrLines(5)" einen numerischen Wert (Zeit, wie lang das Popup angezeigt werden soll). Existiert in deiner Textdatei keine 6. Zeile bzw steht in dieser Zeile keine Zahl, wirst du diese Fehlermeldung bekommen.
Grüße
rubberman
Dann noch mal kurz zur Erklärung:
Das script splittet die Textdai in ein Array namens "arrLines"
In "arrLines(0)" findest du die erste Zeile der Datei ... in "arrLines(5)" die sechste Zeile (analog den ursprünglichen 6 Textdateien in deinem Ausgangsscript).
In Zeile 19 meines Scripts erwartet das Popup in "arrLines(5)" einen numerischen Wert (Zeit, wie lang das Popup angezeigt werden soll). Existiert in deiner Textdatei keine 6. Zeile bzw steht in dieser Zeile keine Zahl, wirst du diese Fehlermeldung bekommen.
Grüße
rubberman