justanumber44
Goto Top

Update Check per Batch oder VBS

Hallööö :D
Da ich schon öfter hilfreiche Antworten hier gefunden habe, hab ich mich Heute Registriert um jetzt auch mal eine Frage zu stellen.

Ich suche eine Möglichkeit, zu prüfen, ob sich der Inhalt in einer Textdatei auf meinem Server verändert hat. Am besten ohne die Datei herunterzuladen, denn das habe ich auch schon geschafft. Bitte helft mir :D

Content-ID: 207305

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

Ausgedruckt am: 24.11.2024 um 15:11 Uhr

certifiedit.net
certifiedit.net 31.05.2013 um 17:23:29 Uhr
Goto Top
Hallo,

frag doch einfach das Datum der letzten Änderung ab.

Grüße
justanumber44
justanumber44 31.05.2013 aktualisiert um 17:50:26 Uhr
Goto Top
Und wie kann ich die abfrage an die Batch oder VBS Datei weiterleiten?

Ich bräuchte eine Möglichkeit, eine Datei aus dem Internet wie eine lokale Datei auf dem Computer als Variable zu Speichern, wenn so was überhaupt Möglich ist...
certifiedit.net
certifiedit.net 31.05.2013 um 17:52:10 Uhr
Goto Top
Das funktioniert nicht, ich nahm an: "meinem Server" = lokaler Server, auf den per Freigabe zugegriffen werden kann.

Spezifizier deine Anforderungen mal
justanumber44
justanumber44 31.05.2013 um 19:17:11 Uhr
Goto Top
Ok, Entschuldigung
Als mein Server ist ein auf Apache basierter DualCore mit Windows Server 2008. Und ich möchte jetzt, das eine Batch oder VBS Datei vergleicht, ob eine neue Version existiert. Also eine Möglichkeit, das die VBS oder Batch Datei etwas abfragt, und dann als Variable Speichert. Es handelt sich nur um eine Zeile die Abgefragt werden soll. Und das ganze am besten so, das es ohne Zwischenspeichern Funktioniert. Bis jetzt habe ich das:

Batch
if not exist AlteUp.txt echo %random%%random%%random%>%temp%\AlteUp.txt
cscript //nologo "DL1.vbs"
set /p Update=<Update.txt
set /p AlteUp=<C:\AlteUp.txt
echo Update.txt %Update%
echo AlteUp.txt %AlteUp%
if %Update% == %AlteUp% goto noupdate
VBS (DL1.vbs)


strFileURL = "http://justanumber44.com/Update.txt"
strHDLocation = "Update.txt"


Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")

objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()

If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1

objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0

Set objFSO = Createobject("Scripting.FileSystemObject")
If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
Set objFSO = Nothing

objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End if

Set objXMLHTTP = Nothing

Und ich versuche, das ganze ohne das Speichern der "Update.txt", da die oftmals nicht wieder gelöscht wird
( del /F /Q Update.txt ), oder sich die Datei erst nach dem 2ten oder 3ten wiederholen des Programmstarts neu (also mit dem richtigen Inhalt) herunterlädt (auch so, wenn ich die Update.txt direkt am Server verändere).
mfg
76109
76109 01.06.2013 aktualisiert um 16:24:22 Uhr
Goto Top
Hallo justanumber44!

Verwende 'WinHttpRequest' anstelle von XMLHTTP:
    Const strFileURL = "http://justanumber44.com/Update.txt"  

    Set oWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")  
    
    With oWinHttp
        .Open "Get", strFileURL, False  
        .Send
    End With

    If oWinHttp.Status = 200 Then
        '... oWinHttp.ResponseBody  
    End If
Im Gegensatz zu XMLHTTP wird die Datei damit immer wieder frisch eingelesen und den '.ResponseText' kannst Du ohne Zwischenspeichern direkt auswerten...

Gruß Dieter
justanumber44
justanumber44 01.06.2013 aktualisiert um 15:45:23 Uhr
Goto Top
Danke, werde ich gleich testen :D

mfg


EDIT:

Funktioniert super, danke :D