94502
Goto Top

Batch beim start von z.b. iexplorer starten

Hallo
ich würde gerne wissen ob es geht eine batch datei zu schreiben, die sich beim start von einem belibigen programm öffnet in der soetwas steht wie Hallo sie haben das Programm ... geöffnet und zusätzlich (nicht unbedingt nötig) soll eine Programminfo erscheinen

Content-Key: 153071

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

Printed on: April 19, 2024 at 22:04 o'clock

Member: Friemler
Friemler Oct 14, 2010 at 15:42:28 (UTC)
Goto Top
Hallo,

etwa so:
@echo off

setlocal

set "started=0"  

:Loop
tasklist | findstr /i "^iexplore.exe" > NUL && (if %started% equ 0 call IExploreRunning.cmd & set "started=1") || (set "started=0")  
goto Loop

endlocal

Dieses Skript müsste ständig laufen.

Gruß
Friemler
Mitglied: 94502
94502 Oct 15, 2010 at 07:50:47 (UTC)
Goto Top
Kann man das auch so einstellen das sich dieses Programm bei jedem Programm auto. öffnet und automatisch den namen ergenzt
Member: Friemler
Friemler Oct 15, 2010 at 10:50:54 (UTC)
Goto Top
Hallo,

aufgrund Deiner übrigen Threads ist mein Geduldsfaden zwar mindestens so stark gespannt, wie die E-Saite einer Bass-Gitarre (wenn wir mal bei der G-Saite sind wird's ungemütlich face-wink ), aber um den Mindestanforderungen der Höflichkeit zu genügen, verliere ich hier nochmal ein paar Worte zur Funktionsweise meines Schnipsels.

Der Befehl TASKLIST gibt eine Liste aller momentan laufenden Programme aus. Seine Ausgabe wird aber nicht angezeigt, sondern durch das | über eine Pipeline an den Befehl FINDSTR weitergeleitet. Der sucht wegen dem ^ am Anfang einer Zeile nach dem Wort iexplore.exe und berücksichtigt dabei wegen /i die Groß-/Kleinschreibung nicht. Die Ausgabe von FINDSTR wird aber auch nicht angezeigt, sondern wegen >NUL verschluckt. FINDSTR liefert jedoch bei erfolgreicher Suche als Ergebnis 0 zurück, bei Misserfolg einen von 0 verschiedenen Wert (so machen das die meisten Konsolenprogramme, also Programme ohne grafische Benutzeroberfläche, Stichwort ERRORLEVEL).

Wenn also 0 (Erfolg) zurückgeliefert wird (d.h. der Internetexplorer ist gestartet), werden durch den Operator && die Befehle
(if %started% equ 0 call IExploreRunning.cmd & set "started=1")
ausgeführt. Das bedeutet, daß das Batchfile IExploreRunning.cmd nur ausgeführt wird, wenn die Variable started den Wert 0 hat. Nach Ausführung des Batchfiles wird started auf 1 gesetzt, damit IExploreRunning.cmd beim nächsten Schleifendurchlauf nicht schon wieder aufgerufen wird.

(set "started=0")
ausgeführt. Die Variable wird also wieder auf 0 gesetzt. Dadurch würde nach einem Start von iexplore.exe wieder das Batchfile IExploreRunning.cmd ausgeführt werden können.

Das ganze Skript müsste in den Autostart-Ordner im Startmenü eingebunden werden. Es läuft dann ständig im Hintergrund als eine Art Wachhund, der aufpasst, ob der Internetexplorer gestartet wird.

Um Deine eigentliche Frage zu beantworten: Möglich ist fast alles, kommt auf den Aufwand an, den man treibt. Eine Möglichkeit wäre, alle laufenden Programme, die von TASKLIST ausgegeben werden, zu speichern und beim nächsten Schleifendurchlauf zu überprüfen, ob ein neues Programm in der Liste aufgetaucht ist bzw. ein Programm aus der alten Liste fehlt (also beendet wurde). Das wäre doch mal ein hervorragendes Übungsprojekt für Dich, wenn Du tatsächlich Batchskripting lernen willst. Wenn Du dann zu einer Lösung kommen würdest, hätte sich auch automatisch das Niveau Deiner Fragen/Tipps/Anleitungen um einige Stufen gesteigert.

Gruß
Friemler