Batch Task killen / einfach beenden: Explorer.Exe mit einem bestimmten offenen Pfad

cumulonimbus8

Fleet Admiral
Registriert
Apr. 2012
Beiträge
18.422
Moin!

Per Batch öffne ich Explorerfenster um darin gewisse Dinge zu tun. Mithin sind diese Pfade bekannt.
Um ›aufzuräumen‹ würde ich (am Ende nebst anderer Dinge) gerne diese Explorerinstanzen wieder schließen.

Dazu die einfache Idee TASKKILL - wozu ich aber eine PID brauche. Wie bekomme ich die für die bewussten Explorerinstanzen?

Gehen wir vom pessimistischen Fall aus, dass ich nicht z.B. per AutoIt auf Fensternamen schielen kann; da könnte das Vorholen und «Alt-F4» helfen (wie bekäme ich da wiederum die PID um ersatzweise einen Shell-Befehl abzusetzen?)

Oder kann da (für mich eine Fremdsprache) PowerShell helfen die Explorer-Prozesse zu durchleuchten um beim passenden Pfad zuzuschlagen? Bescheiden Batch wäre mir aber näher.

Irgendeine knuffige Idee die mir die nötigen Infos beschafft?

CN8
 
Vielleicht einen Schritt zurück: Wozu öffnest du die Explorer.exe?
Um dort dann manuell etwas zu tun?
Wenn alles automatisch: Vielleicht lässt sich das ja auch ohne Explorer.exe Instanzen zu spawnen lösen?
 
Nein, ich muss da reinsehen. Oder mehr - ich will das auch.

Es werden Files bewegt (1. Batch; eigentlich schon Explorer #0, aber auf den wird verzichtet). Dann von mir gesichtet - Explorer #1. Dann, wenn OK, konvertiert (Batch/Tool), die Konversion auf gewisse Macken geprüft (ich; Explorer #2). Und final alles ordentlich weggeräumt (2. Batch).
Mehr Automatik geht nach praktischen Erkenntnissen und Erfahrungen nicht. Bleiben nunmehr 2 Explorer die es ordentlich zu schließen gilt (2. Batch).

CN8
 
Moin,

Ich würde das per Powershell machen. Da kannst Du Dir die PID zurückgeben lassen.

Code:
$app = Start-Process notepad -passthru
Write-Host $app.Id
 
@Tornhoof
Get-WindowTitle.ps1 - ist schon eben das was ich oben ausgeschlossen habe weil der Fenstertitel nicht verlässlich ist. (Oder doch? s.u.)
Unterschiedliche Prozesse sind das gewiss, um diese Frage zu beantworten.

@Thaddelino
Kannst du mir erklären was ich mit deinem Code anstellen soll?
Auf keinen Fall kenne ich PS so gut die in Batch ausgeführten Schritte darüber abzuwickeln. Ich müsste die Ausgabe Write-Host dann auch konservieren da ich sie bei einem zweiten Skript benötigte das den Output wieder auswertet. Umlenken in Datei z.B. die, stupide Batch, For-In abarbeitet?

{Ich hantiere mit Batch weils schnell & einfach ist. Ich quäle VBA um diverse Dinge zu vereinfachen. Auch mal den WSH/VBS, AutoIt. Immer wieder stößt mir auf, dass die für den Einen simplen Dinge für den Anderen zum Horrotrip werden. Als ob modernere Sprachen einfach nicht durchentwickelt wurden um altes abzulösen. PS ist mir zu schwülstig, eine Syntax für die man ein, gefühlt, 500-Seiten-Handbuch braucht und da dann auch noch finden müsste ob PS das überhaupt kann - oder niche auf gewisse Mechaniken käme. $app.Id - warum nicht $app.PID? Da würde man intuitv drauf anspringen, aber eine ID, was für eine?}

Um die 2 Skriptschritte komme ich nicht rum, wie ich ein paar Zeilen Batch (die müsste ich wohl angeben) in PS gieße weiß ich nicht, wie der o.g. Output überdauert auch nicht.

Gibts wirklich nichts, dass Prozesse intensiv genug durchleuchten kann um zu sagen: „Das ist er!“? Scheinbar ist der Fenstertitel wohl doch der einzige Ansatz (ja, ich habe durchaus den vollen Pfad in der Titelleiste eingeschaltet) da die Ordnernamen eindeutig genug wären. Aber welcher »Killer«, Einzeiler…, kann sich daran orientieren? Für eine lächerliche Aktion soundsoviele Skripte und Sprachen (siehe erwähntes AutoIt, das aber bei simplem Dateikopieren sperrig ist) über Kreuz einspannen zu müssen - muss das denn sein? :(

CN8
 
Meiner Erfahrung nach sind komplett automatisierte Tasks mit einer "echten" Skriptsprache wie Python deutlich effizienter. Dort könnte der das "Prüfen" auf Macken ja auch automatisch passieren. Ich würde mich nur im Notfall mit Taskkill und GUIs beschäftigen. Ohne die eigentliche Aufgabe zu kennen ist das aber auch schwierig zu beurteilen.
Wenn dort eh manuelle Schritte drin sind versteh ich nicht ganz den krassen Mehrwert davon die Explorer Fenster per Skript aufzuräumen wenn es nur zwei sind. Dann tuts doch 2x ALT-F4 oder? :D
 
Grundkonzept der Aktion: Maximierung der persönlichen Faulheit :D

Python, AutoIt, WSH - wenigsten mit den letzten zwei käme ich noch aus. Zu viele Sprachen (HTML, JavaScript, SPSS…) wären dann doch der Overkill fürs Gehirn

Was möge ich zusammenfassen ohne noch mehr Faulheit zu offenbaren?
• Speicherkarte der DashCam.
• Sammel-Ordner, darin Unterordner mit Datum, dahin sollen die Filmchen kopiert (..!) werden.
• Datumsordner im 1. Explorer, angucken - manuell.
• Manuell an Konvertiertool übergeben (AVI zu MPG).
•• Das muss in Idle laufen, erzeugt aber immer wieder eine Konversion doppelt; mal korrekt, mal ging ein Versuch schief. Ergo 2. Explorer des Output-Ordners um das zu sichten.
• Nun Skrpit 2 - Output in Datums-Ordner moven, Datums-Ordner in Backup kopieren, Speicherkarte der AVIS entledigen (erst jetzt).
•• Letzteres bockt auch immer wieder mal → bleibt hängen, warum weiß der Geier. Kartenleser wechseln, Löschbefehl manuell.
• Und nun müssen ›nur noch‹ die Explorer zu.

Das soll automatisiert werden weil diese Aktion mehrfach die Woche vorkommt.

CN8
 
Tornhoof schrieb:
Naja wenn du den Explorer Prozess in deinem Script selber startest hast du die Pid.
Käme auf die Sprache an… Batch kanns nicht. Und, wie gesagt, es gibt 2 Skripte [ich wäre nicht begeistert eins auf Pause zu halten], also muss die Erkenntnis des ersten ans zweite übergeben werden.
Zum Link - ich bastele gerade wieder an was Anderem… Wo ist da unten was mit WMI, ich seh’s nicht, sorry, betriebsblind.

Ein Kommandozeilentool, ein Killer, für WIN der sich an Fenstertiteln statt PIDs orientiert wäre ein simple Lösung… …die unmittelbar ins Vorhandene eingebaut werden kann.

CN8
 
Der Ansatz über die PID wird nicht funktionieren. Einfach deswegen, weil zumindest standardmäßig alle Explorerfenster im selben Prozeß geöffnet werden.

Was man zwar ändern kann, aber das hat seine eigenen Zicken (komische Dinge passieren da irgendwann) und Portable ist es auch nicht, wenn man nicht grad überall exakt jene Einstellung erzwingt.

Wobei ich spontan auch nix auf dem Schirm habe in Bezug auf die Unterscheidung von Subwindows desselben Prozesses.
Threads anschauen wäre naheliegend, aber ob da der jeweilige WindowTitle ermittelbar wäre? Keine Ahnung.
 
Warum soll das mit der PID scheitern?
Ich sehe in den Taskmanager, finde einige Explorerinstanzen, jede mit eigener PID.
CN8
 
Sicher dass du vom Prozess-IDs sprichst und nicht von Fenster-Handles?
Weil ich habe auch nur einen Explorer-Prozess. Aber du sprichst ja vom Task-Manager...

1645231601489.png
 
Würde sagen: ja.

Detailansicht:
1645262564293.png

6 Explorerinstanzen, und hier auch 6 Fenster. Mit 6 PIDs. Das einzige «Datum» mit dem herkömmliche Killer killen können.

Das hier tickt unter unter Windows-Prozesse in der Prozessansicht:
1645262794724.png


Und oben bei Apps präsentiert sich das obige Sextett so:
1645263085337.png

In der Tat - 19244 ist da etwas komisch.
Wenn der Fenstertitel der Anker ist wäre das ein Anhalt; wenn ich zu oft andere Explorer mit abschösse würde ich wohl auf Handarbeit zurückfallen.

CN8
 
Vor allem zum Explorerabschießen wenns klemmt oder der Kamerad abpfeift :D
Nur würde im Normalfall ausschließlich ein Fenstertitel helfen können…
CN8
 
Zurück
Oben