charmeur
Goto Top

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 ?
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 

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

rubberman
rubberman 03.08.2011 um 01:38:51 Uhr
Goto Top
Hallo charmeur,

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
Grüße
rubberman
Friemler
Friemler 03.08.2011 um 01:44:56 Uhr
Goto Top
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:
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

  1. in Zeile 28 durch setzen der Global-Eigenschaft auf False festgelegt wurde, dass nur der erste Treffer gefunden werden soll, auf den das Suchmuster passt
  2. 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
charmeur
charmeur 03.08.2011 um 22:22:35 Uhr
Goto Top
Zitat von @charmeur:
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 ?
> 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 
> 
> 
> 

erst mal danke für die hilfe
aber leuder bekomme ich den fehler 800A000D --- Typen unverträglich
muss ich etwas bei der txt Datei beachten bzw . wie sollte die aussehen?
charmeur
charmeur 03.08.2011 um 22:46:50 Uhr
Goto Top
das sript geht so weit danke nur habe ich das problem sobald ich eine eserver adresse angebe (http://...123.txt
gehts leider nicht mehr
rubberman
rubberman 04.08.2011 um 00:01:48 Uhr
Goto Top
Hallo charmeur.
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) nicht
2. In der Fehlermeldung steht normalerweise auch die Zeilen- und Zeichennummer, wo der Fehler auftritt...

Grüße
rubberman
charmeur
charmeur 04.08.2011 um 00:27:30 Uhr
Goto Top
Zitat von @rubberman:
Hallo charmeur.
> 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) nicht
2. In der Fehlermeldung steht normalerweise auch die Zeilen- und Zeichennummer, wo der Fehler auftritt...

Grüße
rubberman

ok da hast recht also
in der txt steht in der ersten zeile ein datum dann der name und anschliessend noch mal nen datum
und der fehler laut fehlerbild ist in Zeile 19 Zeichen 5
rubberman
rubberman 04.08.2011 um 00:41:13 Uhr
Goto Top
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
charmeur
charmeur 04.08.2011 um 01:29:24 Uhr
Goto Top
Zitat von @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

ach so ok hat soweit funktioniert ... sorry für mein unwissen
nun hätte ich da noch eine frage und zwar hast du in zeile 33
" ) ' Habe ich auskommentiert, weil es keine Routine "StartApp" in deinem Code gibt." geschrieben
was müsste man den da noch haben das ich ein programm starten kann?
rubberman
rubberman 04.08.2011 um 01:41:05 Uhr
Goto Top
Die Run Method á la
    WshShell.Run arrLines(2)
Grüße
rubberman
charmeur
charmeur 04.08.2011 um 01:55:08 Uhr
Goto Top
Super vielen lieben dank