17.3k Aufrufe
Gefragt in Anwendungen(Java,C++...) von amazzzing Einsteiger_in (21 Punkte)
Hallo zusammen
Ich bin ein bisschen mit Batch-Dateien am experimentieren (habe noch nicht viel Ahnung) und wäre froh wenn mir jemand eine Batch-Datei zusammenstellen kann, die folgende Dinge kann:

-Nachricht erscheint und warten auf Bestätigung mit OK
-Nach OK-Druck öffnet sich ein Link
-Die Batch-Datei loggt sich auf dieser Seite mit Benutzername und Passwort ein
-Mehrere Instruktions-Nachrichten zur Fortsetzung folgen

Ich bin inzwischen so weit gekommen:
msg * (Nachricht)
(dass der Link wartet auf OK-Druck weiss ich nicht wie schreiben)
start /w iexplore "(Link)"
(Login erfolgt => Weiss ich auch nicht wie schreiben :-D)
msg * (Nachricht)
msg * (Nachricht)
...

23 Antworten

0 Punkte
Beantwortet von
Zeile 36 sieht folgendermaßen aus:

e(0).submit

Fehler: Objekt erforderlich: '[object]'
Code: 800A01A8
Quelle: Laufzeitfehler in Microsoft VBScript

obwohl ich den Code abgeändert hab und der jetzt so ausschaut:

MsgBox "Anweisungstext 1"

' MSIE erzeugen
Dim IE
Set IE = WScript.CreateObject("InternetExplorer.Application")

' warten, bis er sich ausgekäst hat mit starten
While IE.Busy
Wend

' wir müssen ihn explizit sichtbar schalten
IE.Visible = 1

' Seite aufrufen und warten, bis sie vollständig geladen ist
IE.Navigate "http://o1582"
While IE.ReadyState <> 4
Wend

Dim e
Dim i1

' alle name="user" -Elemente finden (keine IDs vorhanden) und Wert setzen
' Set e = IE.Document.getElementsByName("username")
' For i1 = 0 To e.length - 1
' e(i1).value = "du_der_benutzer"
' Next

' dasselbe nochmal fürs Passwort
Set e = IE.Document.getElementsByName("P")
For i1 = 0 To e.length - 1
e(i1).value = "xxx"
Next

' die einzige <FORM> finden
Set e = IE.Document.getElementsByTagName("log")
e(0).submit

MsgBox "Anweisungstext 2"
MsgBox "Anweisungstext 3 ..."

---------------------------------------------------------------------------------------------

Stimmt das "P" an der Stelle, wo er sich das Element holt?
(siehe html-Code oben)

mfg deny
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
@deny
Set e = IE.Document.getElementsByTagName("form")

muss es natürlich heißen. Wer ist denn überhaupt auf die Idee gekommen, das je von meinem ursprünglichen Post zu ändern?!?

@rockbox
Nein - das ist ausschließlich mit dem MSIE machbar. Und Beispiele hast du hier genug - eine Komplettlösung für mehrere sich wiederholende Aufgaben gebe ich nicht.
0 Punkte
Beantwortet von
Hab den Code nochmal vereinfacht:

---------------------------------------------------------------------------------------------
Dim IE
Set IE = WScript.CreateObject("InternetExplorer.Application")

while IE.Busy
Wend

IE.Visible = 1

IE.Navigate "o1582"
while IE.ReadyState <> 4
Wend

Dim e
Dim i1

set e = IE.Document.getElementsByName("P")
For i1 = 0 To e.length - 1
e(i1).value = "xxx"
Next

Set e = IE.Document.getElementsByTagName("form")
e(0).submit
---------------------------------------------------------------------------------------------

Er meckert jetzt bei Zeile 22 (e(0).submit)
Objekt erforderlich '[object]'

Hinter dem Login button steckt ein _LOGIN.CGI, siehe htmlCode:

<html><head><link href="_np.css" rel="stylesheet" type="text/css"></head><body background="_bg.gif" onload="rel();"><table border=0 width="148"><tr><td class=pgHdr>Login</td><td align="right" style=font-size:7pt;><a href="mobile.cgi" target="_blank">Mobile Control</a></tr></table><table border=0 width=148 class=menu2><tr><td>Nutzer : <b>Gast</b><br></td><tr><td><font color=teal><b>Passwort:</b></font></td></tr><tr><td align=center><form name=log method=GET action="_LOGIN.CGI" onsubmit="v.value=hex_sha1(P.value+r.value);P.value=''" style="line-height:0; margin-top:0; margin-bottom:0;"><input type="hidden" name="r" value="DM"><input type="hidden" name="n" value="Gast"><input type=password size=8 maxlength=8 name="P"><input type="hidden" name="v"> <input type=submit value=Login name="w" disabled></form></tr><tr><td height="22" align="center"><span style=font-size:7pt;> Ausloggen: Login ohne Passwort.</span></td></tr></table></body><script type="text/javascript" src="_sha1.js"></script><script type="text/javascript">document.log.w.disabled=false;</script></html>

mfg deny
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Kann ich nicht nachvollziehen (bei mir klappt es). Benutze MSIE6 unter WinXP. Lass die entsprechende Zeile weg und sag, ob er wenigstens das Passwort füllt - und ob es klappen würde, wenn du selbst auf den Button klickst.
0 Punkte
Beantwortet von
Die Zeile

e(0).submit

ist draußen, jetzt meckert er nicht mehr, jedoch trägt
er mir das Kennwort nicht automatisch ein und startet auch
keinen Versuch zu senden (Login-Button)

Nach manueller Eingabe vom PW und nach Klicken auf Login
meldet er sich korrekt an!

IE6 XP

mfg

deny
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Dann stimmt schon vorher etwas nicht - bei mir trägt er ja das Passwort ein. Das hier sieht mir auch sehr verdächtig aus:
IE.Navigate "o1582"

Ruf die Seite "normal" auf und kopier aus der Adressleiste exakt das, was dann drin steht und trag das stattdessen hier ein. Das muss mindestens mit Protokoll sein, also mindestens http://o1582. Aber auch hier frag ich mich: bleibt das wirklich so stehen?
0 Punkte
Beantwortet von
o1582 ist die Namensauflösung der Netzwerkfähigen Steckdosenleiste.

Habs mal geändert:

---------------------------------------------------------------------------------------------
Dim IE
Set IE = WScript.CreateObject("InternetExplorer.Application")

while IE.Busy
Wend

IE.Visible = 1

IE.Navigate "http://10.2.15.82/"
while IE.ReadyState <> 4
Wend

Dim e
Dim i1

set e = IE.Document.getElementsByName("P")
For i1 = 0 To e.length - 1
e(i1).value = "xxx"
Next

Set e = IE.Document.getElementsByTagName("form")
---------------------------------------------------------------------------------------------

Er ruft die Seite korrekt auf trägt jedoch kein Kennwort ein und Login't nicht automatisch.

Vielen Dank für Deine schnellen Antworten...

mfg

deny
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Tausche zu Testzwecken (also am besten eine Kopie der Datei erstellen) diese Zeile
set e = IE.Document.getElementsByName("P")
gegen folgende:
set e = IE.Document.getElementsByName("P")
MsgBox e.length
set e = IE.Document.getElementsByName("p")
MsgBox e.length
set e = IE.Document.getElementsByName("FORM")
MsgBox e.length
set e = IE.Document.getElementsByName("form")
MsgBox e.length
und sag mir die Ausgaben. Ferner kann es auch an Sicherheitseinstellungen liegen, die bei dir restriktiver sind als bei mir (z.B. Sicherheit -> Stufe anpassen -> Binär- und Skriptverhalten -> aktivieren) - aber spätestens hier gibt es zuviele Konstellationen, die wir unmöglich vergleichen können. Das wird zu aufwendig und du müsstest auf eigenen Fleiß hin dir all deine Einstellungen aufschreiben (um sie später wieder herstellen zu können) und dann jeweils immer alles erlauben oder so wenig restriktiv wie möglich stellen...
0 Punkte
Beantwortet von
set e = IE.Document.getElementsByName("P")
MsgBox e.length

Ausgabe: 0
---------------------------------------------------------------------------------------------

set e = IE.Document.getElementsByName("p")
MsgBox e.length

Ausgabe: 0
---------------------------------------------------------------------------------------------

set e = IE.Document.getElementsByName("FORM")
MsgBox e.length

Ausgabe: 0
---------------------------------------------------------------------------------------------

set e = IE.Document.getElementsByName("form")
MsgBox e.length

Ausgabe: 0
---------------------------------------------------------------------------------------------

Liegt es daran, dass durch Klick auf Login ein CGI-Skript ausgeführt wird und er dadurch nicht weiterkommt?

mfg

deny
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Neihein. Fakt ist: das Skript findet gar nichts innerhalb der aufgerufenen Seite. Da du die aufgebaute Seite allerdings sieht, wird sie definitiv geladen. Bleibt nur noch meine Vermutung nach zu starken Sicherheitseinstellungen.
...