mathe172
Goto Top

Programme beenden oder minimieren per batch

Hallo zusammen!

Ich hab schon lange gesucht aber nichts zu meinem Problem gefunden...
Ich will mithilfe einer batch alle laufenden Programme beenden oder minimieren (ich weiss nicht ob Programm der beste Begriff ist, jedenfalls meine ich die Sachen wie Word oder IE und nicht solche Prozesse wie svchost.exe, die kein sichbares Fenster haben)
Ist sowas überhaupt möglich, z.B. in der Art Alle Programme aufspüren und dann beenden? Leider sind es keine festen Programme und ich kann nicht mal eine Liste aller Programme erstellen und diese dann alle beenden.

Mathe172

Content-ID: 146750

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

Ausgedruckt am: 21.11.2024 um 17:11 Uhr

Biber
Biber 12.07.2010 um 21:30:37 Uhr
Goto Top
Moin mathe172,

das ganze Unterfangen sollte aber schon irgendwie ein nachvollziehbares Ziel verfolgen, oder?

Ich meine, sooo beliebig ist das ja nun nicht, ob eine Word-Applikation oder ein IE mit 18 offenen Tabs (IE hat doch inzwischen schon Tabs, oder?) minimiert oder abgeschossen wird.

Um nur ein Kriterium zu nennen - eine minimierte ungesicherte 78seitige in Word getippselte Diplomarbeit lässt sich mit vertretbarem Aufwand wieder sichtbar machen.

Was hast du denn vor und warum so brachial?
Darf, wenn deine Kumpels überraschend zur Tür rein kommen, nur noch WoW laufen und alle Spießer-Aktivitäten wie Hausaufgaben oder Recherche auf Chefkoch.de muss panikartig geschlossen werden?

So eine Art umgekehrter Boss-Key? Oder was treibt dich um?

Grüße
Biber
60730
60730 12.07.2010 um 21:33:33 Uhr
Goto Top
Moin,

in solchen Fällen bitte Ross & Reiter nennen.

  • Also ob minimieren oder abschiessen
  • evtl. vielleicht wäre unter Umständen auch interessant, welche Version des Redmontschen Betriebsystems im Einsatz ist
  • möglicherweise könnte es auch Sinn machen uns den Grund des Wunsches preiszugeben, denn so manches mal denkt man man braucht eine Lösung und fragt gar nicht, ob das Sinn macht.

Gruß
[Edith schreibt einen Brief an unseren werten Herrn Biber.]
Liebster Biber,
da macht man den Deckel vom Laperltopf auf und ist 3 minuten zu spät.

[OT]
Willi Astor ab 1:40
[/OT]
rubberman
rubberman 12.07.2010 um 21:53:22 Uhr
Goto Top
Hallo mathe172,

Ich schieß mal fix mit einem "Alles-Minimieren-VBScript" dazwischen face-wink
*.vbs
CreateObject("Shell.Application").ToggleDesktop  

Grüße
rubberman
HeinrichXII
HeinrichXII 12.07.2010 um 23:27:24 Uhr
Goto Top
Aloha,

aber von "Desktop anzeigen" bei Windows Xp und Vista bzw. dem kleinen Viereck rechts unten in der Taskleiste bei Windows 7 hast Du schon gehört? Da hat sich jemand schlaues (ausnahmsweise nicht ich face-smile ) sich eine Funktion ausgedacht, wie man alle offenen Fenster minimieren kann.

MfG Heinrich
mathe172
mathe172 13.07.2010 um 17:36:34 Uhr
Goto Top
Hallo und schonmal danke für das das ihr überhaupt antwortet! Wenn ichs mir recht überlege, muss ich die Programme schliessen (das minimieren über Desktopsymbol hab ich glatt vergessen...schäm). Ich hab fast immer ziehmlich viele Programme offen (aber in Programmen wie Word ist das Zeug immer gespeichert), und ich dachte, ich könnte diese Schliessaufgabe zu den Restlichen Sachen in meiner batch tun.
Falls es noch wichtig ist, ich habe Microsoft Windows XP Media Center Edition Version 2002.

Mathe172
Biber
Biber 13.07.2010 um 19:00:10 Uhr
Goto Top
Moin mathe172,

ich habe auch einen gewissen Spass beim Schreiben von Bätchen und könnte dafür auch Zeugen nennen...

Aber dennoch ein letztes "Ja, aber.." vor irgendwelcher handwerklichen Drauflostippselei.

Ich weis nicht, was denn die erwähnten "Restlichen Sachen in meiner batch tun".
Ein Schließen aller offenen Programme ist aus meiner Sicht nur dann per Batch sinnvoll, wenn der Batch denn auch in jedem Fall entscheiden kann, ob eine Applikationsrückfrage "Sollen Änderungen gespeichert werden?" oder "Wollen Sie gefundenen Virus löschen oder ignorieren?" oder "Nicht genügend Speicherplatz auf Laufwerk F zum Speichern von Predator 7'" allein und ohne menschliches Eingreifen beantworten kann.

Das ist aber nur in einem einzigen Fall möglich - nämlich wenn die Antwort IMMER ist "Mir doch egal , kleiner Schisser... beende einfach!".

Nur dann kannst du statt irgendeinem Batch einfach ein "Shutdown" oder "Reboot" abschicken.. die machen genau das Gleiche.

Was ist denn bei dir ein "typischer Anwendungsfall", bei dem du jedes Mal wieder aufs Neue vor dich hin seufzst :" Ach wenn ich jetzt so einen Batch hätte.."?

Grüße
Biber
rubberman
rubberman 13.07.2010 um 19:34:32 Uhr
Goto Top
Hallo Biber.

Als erstes: Völlig d'accord mit dem, was du schreibst.
Andererseits lässt du aber auch die Option auf, dass es möglich ist. Was mich dabei unglaublich neugierig macht, ist die Frage, ob es tatsächlich möglich ist (ich erweitere mal "mit Batch" auf "mit Bordmitteln") die Prozesse zu finden, die ein Fenster geöffnet haben / sich in der Taskleiste wiederfinden. Wenn man API Funktionen aufrufen kann, ist das eher kein Problem. Aber mit Batch / WSH ... ?

Grüße
rubberman
Biber
Biber 13.07.2010 um 19:54:06 Uhr
Goto Top
Moin rubberman,

nicht, dass ich es schon probiert hätte (eigentlich will ich es ihm ja ausreden face-wink )... , aber ...

Selbst mit solchen Behelfskrücken wie "tasklist.exe" bekomme ich es ja zumindest schon eingrenzt auf "die Tasks des Users" mit /FI "username eq %username%".

Im TaskManager gibt es eine gesonderte Ansicht für "die aktiven Applikationen" (ohne Dienste, Virenscanner etc)
Also wird es dafür vermutlich ein Kriterium geben.
Ich würde dann auch als allererstes mal im den WMIC-Schnittstellen danach graben.
Und wenn das nichts wird... es gibt ja zig Utillities, die "aktive" und "unsichtbare" Fensterpositionen ermiteln können... so furchtbares Hexenwerk kann es nicht sein.

[Dennoch - sollte ich diesen Plan ebenfalls verfolgen - ich würde Shutdown/Reboot aufrufen oder solange Alt-F4 drücken lassen/Sendkeys losjagen, bis ich freie Sicht aufs Mittelmeer hätte.
Aber ich sehe keine sinnvolle Anwendungsmöglichkeit - nirgends mehr Nutzen als Risiko]

Grüße
Biber
rubberman
rubberman 13.07.2010 um 20:04:17 Uhr
Goto Top
Hallo Biber.

Danke für die Antwort und nochmals: Ich bin völlig Deiner Meinung, was das Schließen ohne Rücksicht auf Verluste angeht. War halt nur aus Neugier. Ich kann mich erinnern, dass ich es in einem Excel-Makro (mit API-Aufrufen) schon einmal geschafft habe, die Taskleiste auszulesen. Mit WMI hatte ich aber keine Möglichkeit gefunden.

Grüße
rubberman
mathe172
mathe172 13.07.2010 um 20:45:24 Uhr
Goto Top
Hallo zusammen!

Bibber hat ja was von sendkeys gesagt... geht sowas mit Batch und wenn ja, wie?

Mathe172
Biber
Biber 13.07.2010 um 20:56:41 Uhr
Goto Top
Moin mathe172,

> Zitat von @mathe172:
----
Hallo zusammen!

Bibber hat ja was von sendkeys gesagt... geht sowas mit Batch und wenn ja, wie?
Antwortet man auf eine Frage mit einer Gegenfrage?

Biber
mathe172
mathe172 13.07.2010 um 21:01:55 Uhr
Goto Top
Nein, eigentlich ja nicht face-smile ,aber mir fiel kein gutes Beispiel ein...
es ist einfach das ich manchmal ohne dass ich es merke am Schluss lauter Zeug aufhabe und ich keinen Bock hab(zu faul bin) um sie von Hand zu schliessen.

Mathe172
rubberman
rubberman 13.07.2010 um 21:23:09 Uhr
Goto Top
Hallo mathe172,

Wenn "am Schluss" soviel heißt, wie "vor dem Herunterfahren des Rechners", dann würgt das Herunterfahren des Rechners die Prozesse genauso ab, wie du es mit einem Batchcode vorhattest. Wo ist der Unterschied? BTW Das Eine ist so unschön wie das Andere. Schließe deine Fenster von Hand...

Grüße
rubberman
Biber
Biber 13.07.2010 um 21:35:34 Uhr
Goto Top
Moin mathe172,

tja.. ich sehe es ähnlich wie rubberman.
Es ist wahrscheinlich lösbar - aber
  • ich habe keine fertige Lösung in der Schublade
  • und der vermutliche Aufwand (immens) in Relation zu potentiellem Nutzen (eher gering) und möglichem Risiko ( höher als ICE-Fahren) ergibt.... ich geh lieber Duschen jetzt.

Nichts persönliches... aber ich klink mich da jetzt aus.

P.S. "SendKeys" geht mit ein bissi VBSkript... such mal über die Forumssuche danach.

Grüße
Biber
60730
60730 14.07.2010 um 01:05:36 Uhr
Goto Top
Zitat von @Biber:
Moin mathe172,

tja.. ich sehe es ähnlich wie rubberman.
Es ist wahrscheinlich lösbar - aber
  • ich habe keine fertige Lösung in der Schublade
  • und der vermutliche Aufwand (immens) in Relation zu potentiellem Nutzen (eher gering) und möglichem Risiko ( höher als
ICE-Fahren) ergibt....

[OT]
weil er es ja unbedingt haben will und so nett Hallo geschrieben und Ross & Reiter nachgereicht hat...
[/OT]

Nimmst du zwei schnippsel
tasklist /FI "username eq %username%">vorher.ini  
die platziert man als startscript - (oder läßt es nur einmalig laufen)
Und den "am Ende"
tasklist /FI "username eq %username%">nachher.ini  
for /f %%i in (nachher.ini) do find "%%i" "vorher.ini" || Taskkill /F /IM %%i  

Ich geh jetzt auch duschen und denke, das script ist so erbärmlicherstklässlerisch, dass ich mir das kommentieren sparen kann.
mathe172
mathe172 14.07.2010 um 13:41:36 Uhr
Goto Top
Hallo Zusammen!

Ich möchte mich noch bei TimoBeil bedanken! Genau das habe ich gesucht. Ich werde den Beitrag noch als gelöst markieren.

Mathe172
60730
60730 14.07.2010 um 14:17:13 Uhr
Goto Top
Servus,

wenns so ist - dann danke fürs danke, denn fürs danke machen wir das ja eigentlich.

Und damit das "dingens" auch etwas aus der Holzklasse rauskommt.
if not exist "%appdata%\kickit" md "%appdata%\kickit"  
tasklist /FI "username eq %username%">"%appdata%\kickit\blacklist.ini"  
echo "msiexec.exe" >>"%appdata%\kickit\blacklist.ini"  
echo weitere Ausnahmen -genauso wie oben bei msiexec erzeugen

tasklist /FI "username eq %username%">"%appdata%\kickit\started_tasks.ini"  
for /f %%i in ('type "%appdata%\kickit\started_tasks.ini"') do find "%%i" "%appdata%\kickit\blacklist.ini" || Taskkill /F /IM %%i  

Gruß