CMD Webseite ausführen und wieder schließen

Coddi

Cadet 2nd Year
Registriert
Aug. 2013
Beiträge
24
Hallo,

ich habe ein PHP-Script geschrieben welches ich von einem anderen PC per Batch-Datei aufrufen will.

Meine Batch-Datei sieht momentan so aus:

Code:
start iexplore.exe "http://domain.de/datei.php"

Kann ich den gestarteten Browser wieder schließen lassen?

Viele Grüße und danke im Vorraus
 
Ich würde das wie folgt lösen, weil man mit diesem Schritt auch die ProcessID erhält. Damit kann man später direkt den selbst gestarteten Prozess killen und erwischt nicht den falschen, beziehungsweise mehr als den gewünschten. Das ist natürlich nur dann wichtig, wenn die .exe Datei mehr als einmal ausgeführt wird oder zwei ausführbare Dateien denselben Namen haben.

wmic process call create "C:\Program Files (x86)\Internet Explorer\iexplore.exe http://domain.de/datei.php" | find "ProcessId"

Die Ausgabe sieht dann wie folgt aus ...

ProcessId = 6148;

... und kann in PHP recht einfach verarbeitet werden, wenn du die Ausgabe mit exec($command, $ouptut) in die Variable $output leitest.
 
@dreamy_betty: Grundsätzlich finde ich die Idee, die Prozess-ID zu verwenden für das Abschießen sehr gut.

Allerdings bringt der exec im PHP-Skript nicht viel, wenn die aufgerufene Seite nicht gerade auf dem lokalen Host läuft... (wie die ID dem Script übergeben werden soll, bleibt ja uach noch ungeklärt ;-) und muss auch gar nicht geklärt werden )

Ansonsten, evtl kann es auch Sinn machen sich ein wenig bei Auto-It reinzulesen, ob man da nicht was brauchbares findet... ist aus der Fragestellung halt nicht ganz klar, was genau gebraucht wird.
 
Alternative Lösung: Nimm Wget und verwende den --spider - Paramter:

‘--spider’
When invoked with this option, Wget will behave as a Web spider, which means that it will not download the pages, just check that they are there. For example, you can use Wget to check your bookmarks:
wget --spider --force-html -i bookmarks.html
 
Hallo nochmal,

sorry das es aus meiner Fragestellung nicht richtig rüberkommt.
Also ich möchte von meinen lokalen PC auf mein entfernten Server mittels CMD ein PHP-Script ausführen lassen und den Browser auf mein PC dann wieder schließen.
Somit kann ich dieses Programm nicht von Server schließen.

Ich habe mal die Befehle von Madman1209 und dreamy_betty zusammengefasst:

Code:
wmic process call create "C:\Program Files (x86)\Internet Explorer\iexplore.exe http://domain.de/datei.php" | find "ProcessId"

TASKKILL /PID %ProcessID%

leider funktioniert das nicht ganz:(
 
Die Idee von Daaron ist finde ich ganz gut.
Alternativ würde ich mir überlegen, ob es nicht einfacher wäre, ein Auto-It-Script zu bauen...
 
Hi,

@Daaron

Er will wenn ich das richtig verstehe, dass der Browser sich auf dem Client schließt, nachdem das PHP Skript auf dem Server abgearbeitet wurde. TE, ist das so richtig? Weil dann würde ein Cronjob ja nicht wirklich viel bringen.

Was der TE bräuchte wäre wohl eine Möglichkeit, per Javascript (also Clientseitig) den Browser zu schließen. Da gibt es ganz widerliche Dinge, um das umzusetzen, aber ich würde dir dringend eine andere Möglichkeit ans Herz legen.

VG,
Mad
 
@Madman1209:
"Was der TE bräuchte wäre wohl eine Möglichkeit, per Javascript (also Clientseitig) den Browser zu schließen" => Warum "braucht"? Es wurden genug Alternativen genannt...

Die zentrale Frage ist eigentlich: Warum soll das Script aufgerufen werden?
Wenn man das weiß, dann kann man auch eine Lösung empfehlen. Ansonsten grenzen die Tipps an Kaffeesatzleserei...
 
Hi,

Warum "braucht"? Es wurden genug Alternativen genannt...

man kann alles auf die Goldwaage legen meine Güte :rolleyes: Gut, dann formuliere ich es so: ein Cronjob nutzt dem TE nichts, ein zusätzliches Auto-IT Script kann eine Lösung sein, mir kam es bisher aber so vor, als wolle der TE es gleich in der PHP / HTML Datei lösen, ohne noch etwas anderes zu nutzen, wobei ich mich da jetzt nicht festlegen möchte.

Zufrieden?

VG,
Mad
 
Danke für die zahlreichen Antworten ;)
Ich werde mal mir mal wget ansehen.

Cronjob wäre nicht geeignet, da ich dieses Script spontan ausführen möchte und nicht in regelmäßigen abständen.
 
Hi,

schreib doch bitte einfach mal was genau du vorhast, dann könnte man das ganze vielleicht auch komplett anders lösen.

VG,
Mad
 
Madman1209 schrieb:
Er will wenn ich das richtig verstehe, dass der Browser sich auf dem Client schließt, nachdem das PHP Skript auf dem Server abgearbeitet wurde. TE, ist das so richtig? Weil dann würde ein Cronjob ja nicht wirklich viel bringen.
Denk mal über folgendes nach: Du rufst einen Browser nur auf, um die Seite zu laden. Wenn die Seite geladen ist, schließt du den Browser wieder. Dir ist dabei egal, was in der Seite eigentlich liegt, du willst das alles einfach automatisch öffnen und schließen...

GENAU das macht Wget mit --spider: Es sagt dem Server "hey, ich hätt gern URL soundso", hört dann aber bei der Antwort gar nicht mehr hin, weils ihm egal ist.

Ideal für Cronjob-artige Dinge, die aber eben nicht als Cronjob laufen sondern nur auf Wunsch.

Wenn man den Browser eh nach dem Aufruf wieder schließt, dann muss man sich nicht erst die Mühe machen und 100 MB Browser-Engine von IE, Chrome und Co laden... Das ist pure Zeit- und Energieverschwendung.
 
Coddi schrieb:
Ich habe mal die Befehle von Madman1209 und dreamy_betty zusammengefasst:
[...]
leider funktioniert das nicht ganz:(

Ungeachtet dessen, dass es vielleicht sinnvoller wäre, das ganz anders zu lösen, musst du in deinem Bsp. ja schon auch erstmal die Variable ProcessID zuweisen... et voilà:

Code:
for /f "tokens=3 delims=; " %%a in ('wmic process call create "C:\Program Files\Internet Explorer\iexplore.exe http://domain.de/datei.php" ^|find "ProcessId"') do set ProcessID=%%a
REM Hier pausieren
TASKKILL /PID %ProcessID%
 
@ simpsonsfan, so eine ähnliche Lösung (nur eben mittels set pID=%ProcessID:~13,-1%) hätte ich auch gerade zum Testen erstellt.

Dabei ist mir allerdings aufgefallen, dass das Windows Befehlszeilendienstprogramm wmic.exe für den Internet Explorer auf meinem System (Win7, IE 10) nicht die korrekte ProcessID ausgibt. Programme wie calc.exe, notepad.exe, etc können so problemlos gestartet und geschlossen werden, beim IE erhält man aber nur die Process-ID des Loaders und nicht der Browserinstanz selbst.

Dieser Weg fällt also leider weg.

Nachtrag: nvm, vergesst was ich geschrieben habe. Jetzt geht es auch bei mir plötzlich :freak:
 
Zuletzt bearbeitet:
Ne, du hast schon recht, hier beim IE9 klappt der Weg über die PID nur, wenn sonst noch keine Instanz geöffnet ist, und taskkill /IM iexplore.exe schließt bei mir einfach die letzgeöffnete Instanz, dann kann man sich natürlich den Umweg über die PID sparen, schade, dass das nicht richtig klappt.
 
Hi,

@Daaron

Ideal für Cronjob-artige Dinge, die aber eben nicht als Cronjob laufen sondern nur auf Wunsch.

Genau - daher auch meine Aussage "dann würde ein Cronjob nciht viel bringen" ;)

Ich weiß nicht, ob es nur drum geht, das Skript zu starten und wieder zu schließen, deswegen hatte ich den TE (wie einige andere ja auch schon) gebeten, mal ein bisschen "Butter bei de Fische" zu geben, damit man weiß, ob und was da genau abläuft und der Browser benötigt wird.

VG,
Mad
 
Unabhängig von der Lösung:
Zumal man beim Beenden sieht, dass eigentlich auch gar nicht der Browser geschlossen werden soll, sondern der Tab... das kann das selbe sein, muss es aber nicht... klar, das würde via JS gehen... aber spricht ingesamt um so mehr für wget.
 
@Madman: Dann kann man immer noch Wget ohne --spider verwenden und die erhaltenen Daten anderweitig auswerten. Zur späteren Auswertung wäre aber wohl eher cURL angesagt. So oder so, mir fällt kein Grund ein, sich mit einem vollwertigen Desktop-Browser herum zu schlagen.... und erst recht keiner, wieso es ausgerechnet der IE sein soll.
 
Zurück
Oben