Seite 1 von 1

Bat Datei ausführen...

Verfasst: Mittwoch 30. April 2008, 14:24
von nemomuk
Hallo,

wie kann man am einfachsten eine Bat-Datei ausführen aus einem Python Skript heraus?

Danke!
MfG

Verfasst: Mittwoch 30. April 2008, 16:31
von Leonidas
``subprocess.Popen``?

Verfasst: Mittwoch 30. April 2008, 18:29
von Masaru
Am "einfachsten" wohl mit:

Code: Alles auswählen

import os
os.system(r'c:\pfad_zu_meiner_batch_datei.bat')
Zwar nicht schön (weil Eingabeaufforderung mit geöffnet wird), aber einfach ist es allemal *hehehe*.

>>Masaru<<

Verfasst: Mittwoch 30. April 2008, 18:44
von nemomuk
Danke an beide... funktioniert!!

Nun wollte ich eine Website öffnen, die aber Flash beinhaltet und würde gerne wissen, wie ich an meinen Standardbrowser weitergeben kann, dass er eine Seite öffnen soll?

Verfasst: Mittwoch 30. April 2008, 18:51
von Sr4l

Code: Alles auswählen

>>> import webbrowser
>>> webbrowser.open("http://www.google.de")
True
oder halt auch eine lokale Datei z.B "file://C:/test.html"

*edit*
bei der Antwort musste ich gerade an das denken:
http://www.python-forum.de/topic-12810.html

Verfasst: Mittwoch 30. April 2008, 18:52
von Masaru
Also wenn ich in eine Batch Datei (oder direkt mittels os.system) folgendes ausführen lasse:

Code: Alles auswählen

"c:\_PROGRAMME_\Mozilla Firefox 2\firefox.exe" www.wow-europe.de

(Browserpfad ist natürlich Installationsabhängig), dann geht das relativ einfach *schulterzuck*.

Meinst du sowas? Oder eine Lösung wie von Sr4l vorschlagen (mit dem webbrowser Modul)?

Verfasst: Mittwoch 30. April 2008, 18:52
von nemomuk
genau sowas habe ich gesucht!!
Danke!

Verfasst: Mittwoch 30. April 2008, 18:56
von nemomuk
weißt du vllt. auch noch, wie man dieses Browserfenster wieder schließen kann?^^

Verfasst: Mittwoch 30. April 2008, 19:24
von Masaru
Machbar ... aber schwierig.

Das ist dann ganz und gar nicht mehr einfach, da man für solche eine Aktion:
  • a) die pywin32 extention library unter Anwendung von win32 Techniken zur Ermittlung des Handles des Browserfenster und anschliessendem win32gui.CloseWindow Aufruf nutzen sollte (verdammt kompliziert, wenn man davon keine Ahnung hat)
    oder
    b) sich eine Windows-Variante des "kill" commands besorgt (z.B. PsKill) und dann den Prozess (PsKill executable wieder mittels os.system oder subprocess.Popen aufgerufen) so richtig brutal abschiesst ... die Process-ID holt man sich, indem man den Browser manuell (nicht über das webbrowser modul) mittels os.spawnl startet
>>Masa<<

Verfasst: Mittwoch 30. April 2008, 19:47
von nemomuk
so, hab mir nun das ganze selbst gebastelt... für alle die es interessiert:

Code: Alles auswählen

pipe = subprocess.Popen(["tasklist.exe"], shell=False, stdout=subprocess.PIPE).stdout
string = pipe.readlines()

for x in string:
    a = re.compile("firefox.exe")
    b = a.match(x)
    if b:
        a = re.compile("[0-9]+")
        b = a.findall(x)
        subprocess.Popen("tskill %s" %b[0])
Vllt. wäre es auch einfacher gegangen, aber so geht es^^

Verfasst: Mittwoch 30. April 2008, 20:41
von Leonidas
SchneiderWeisse hat geschrieben:Vllt. wäre es auch einfacher gegangen, aber so geht es^^
Ja, einfacher als mit Regulären Ausrücken bestimmt. Zudem ``firefox.exe`` auch ``firefoxDexe`` matcht, denn der Punkt steht nicht für den literalen Punkt sondern für jedes beliebige Zeichen.

Verfasst: Mittwoch 30. April 2008, 22:15
von Masaru
Das "killen" von Prozessen ist nie wirklich schön ... *hust* geschweige denn immer gesund für eine Anwendung (und evenuelle zu persistenzierende Daten dahinter).

Wenn, würde ich weiterhin eine Abwicklung mittels win32gui.CloseWindow(handle) versuchen anzugehen.

>>Masaru<<

Verfasst: Mittwoch 30. April 2008, 22:43
von gerold
Hallo!

...und ich würde mal darüber nachdenken, ob es unbedingt notwendig ist, den Browser über das Programm wieder zu schließen. :roll:

mfg
Gerold
:-)

Verfasst: Donnerstag 1. Mai 2008, 07:36
von BlackJack
Zumal ich mir auch vorstellen könnte, dass man es einrichten kann, dass beim "Start" einer Webseite in einem schon vorhandenen Browserfenster einfach ein neuer Tab aufgemacht wird. Dann am Ende den ganzen Browser killen zu wollen, könnte den Benutzer doch sehr stark nerven. :-)

Verfasst: Donnerstag 1. Mai 2008, 20:38
von nemomuk
Es handelt sich um ein Skript für mich selbst... Deswegen kommt es mir auch nicht auf 100%ige Sauberkeit an..., da ich weiß was auf meiner Maschine läuft...

Also: Vielen Dank für eure Hilfe!

Verfasst: Sonntag 4. Mai 2008, 11:16
von HWK
Vielleicht wäre das hier noch etwas für Dich: http://www.tizmoi.net/watsup/intro.html
Schau Dir einmal Example 3 an.
MfG
HWK