Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Frage Entwicklung Batch & Shell

GELÖST

Batch soll überprüfen, ob Windows-Explorer gestartet ist

Mitglied: kaeptenblei

kaeptenblei (Level 1) - Jetzt verbinden

25.02.2015, aktualisiert 26.02.2015, 1536 Aufrufe, 6 Kommentare

Hallo zusammen,

ich würde gerne in einer Batch überprüfen, ob der Windows-Explorer (Dateimanager) gestartet ist (unter Win7prof. x64).
Super wäre ein Überprüfung, ob der Explorer in einem bestimmten Pfad läuft, z.B. f:\temp

Die erste Idee war mit tasklist oder taskkill. Um es mir einfacher zu machen, habe ich hier was aus dem Forum genommen:

01.
set Programm=explorer 
02.
 
03.
tasklist |find /i "%Programm%" >nul 
04.
if %errorlevel% == 0 ( 
05.
echo Das Programm "%Programm%" leauft gerade! 
06.
) else ( 
07.
echo Das Programm "%Programm%" leauft gerade nicht! 
08.
)
Funktioniert super, sofern man NICHT den Explorer sucht, denn der läuft im Taskmanager, unter "Prozesse" immer.

Wenn ich den Explorer öffne, dann erscheint im Task-Manager --> Reiter "Anwendungen" ein neues Programm. Dieses heißt dann so wie das Verzeichnis, das man im Explorer angeklickt hat.
Leider konnte ich tasklist nicht davon überzeugen, auch "Anwendungen" zu suchen.

Gibt es eine Möglichkeit, in einer Batch zu überprüfen, ob die "Anwendung TEMP" (Verzeichnis f:\temp) läuft?

Vielen Dank,
Frank
Mitglied: colinardo
25.02.2015, aktualisiert um 18:30 Uhr
Hallo Frank,
mit Powershell-Hilfe ein Einzeiler für die Batch, schließt alle Explorer-Fenster außer der Login-Shell (wäre ja auch blöd sich den Teppich unter den Füßen wegzuziehen ):
powershell -Executionpolicy Bypass -Command "&{gwmi Win32_Process -Filter \"Name = 'explorer.exe'\" | ?{$_.Commandline -ne 'C:\windows\explorer.exe'} | %{$_.Terminate()}}"
Wenn nur ein Fenster mit einem bestimmten Title geschlossen werden soll geht das auch:
(Hinweis: Das Beispiel setzt voraus das im Explorer eingestellt ist das der ganze Pfad in der Titelleiste erscheint. Ansonsten muss man halt nur nach dem letzten Teil des Ordners temp filtern - hier kann man auch mit regex arbeiten es stehen einem alle Möglichkeiten der Powershell offen)
powershell -Executionpolicy Bypass -Command "&{Get-Process | ?{$_.Name -eq 'explorer' -and $_.MainWindowTitle -eq 'f:\temp'} | Stop-Process -Force}"
Grüße Uwe
Bitte warten ..
Mitglied: kaeptenblei
25.02.2015 um 18:29 Uhr
Hallo Uwe,

ich möchte eigentlich nicht die Explorer-Fenster schliessen, ich will nur wissen, ob es läuft (am besten in einem bestimmten Verzeichnis).

Wenn ich deine Zeile oben in eine Batch kopiere, passiert bei mir leider nichts (schließt keine Explorer Fenster).
Muss allerdings gestehen, dass ich mit Powershell bisher so gut wie nichts zu tunen hatte. Aber so weit ich weiss, kann ich doch den powershell-Befehl im CMD Fenster aufrufen - als auch aus einer Batch heraus - oder?

Schönen Abend noch
Frank
Bitte warten ..
Mitglied: colinardo
LÖSUNG 25.02.2015, aktualisiert 26.02.2015
Zitat von kaeptenblei:
Wenn ich deine Zeile oben in eine Batch kopiere, passiert bei mir leider nichts (schließt keine Explorer Fenster).
Im unteren Befehl hatte ich noch was korrigiert
Muss allerdings gestehen, dass ich mit Powershell bisher so gut wie nichts zu tunen hatte. Aber so weit ich weiss, kann ich doch
den powershell-Befehl im CMD Fenster aufrufen - als auch aus einer Batch heraus - oder?
Ja, deswegen habe ich sie so geschrieben das du sie ohne in eine Powershell zu wechseln ausprobieren kannst.
Funktionieren hier beide einwandfrei.

ich möchte eigentlich nicht die Explorer-Fenster schliessen, ich will nur wissen, ob es läuft (am besten in einem bestimmten Verzeichnis).
Auch kein Problem, vorausgesetzt der Explorer ist so konfiguriert das der komplette Pfad im Title des Fensters steht, ansonsten gilt das im letzten Post dazu genannte.
powershell -Executionpolicy Bypass -Command "&{if (Get-Process | ?{$_.Name -eq 'explorer' -and $_.MainWindowTitle -eq 'f:\temp'}){write-host 'Fenster existiert'}else{write-host 'Fenster existiert nicht'}}"
Wenn nur der Ordnername und nicht der komplette Pfad in der Titelleiste des Fensters stehen:
powershell -Executionpolicy Bypass -Command "&{if (Get-Process | ?{$_.Name -eq 'explorer' -and $_.MainWindowTitle -eq 'temp'}){write-host 'Fenster existiert'}else{write-host 'Fenster existiert nicht'}}"
Grüße Uwe

Noch als kleine Einführung in Powershell-Scripte und deren Ausführung:

Anleitung: Wie starte ich Powershell-Scripte

  • Zuerst speichert man den Code in einer Textdatei mit der Endung .ps1.
  • Wenn man zum ersten mal Powershell-Scripte ausführt, musst man einmalig vorher noch das Ausführen von Scripten im User-Account freischalten. Dazu öffnet man eine Powershell-Konsole und gibt dort den Befehl Set-ExecutionPolicy RemoteSigned -Force ein. Um diese Policy für alle User auf dem Rechner zu setzen muss man diesen Befehl in einer Powershell-Konsole mit Admin-Rechten starten. Noch ein Hinweis für 64-Bit-Systeme: Hier sollte sowohl für die 32bit und 64Bit Variante der Powershell die Policy in einer Admin-Konsole gesetzt werden: Set-ExecutionPolicy RemoteSigned -Force; start-job { Set-ExecutionPolicy RemoteSigned -Force } -RunAs32
  • Jetzt kann das Powershell-Script wie weiter unten erläutert in einer Powershell-Konsole oder aus einer CMD-Fenster heraus ausgeführt werden. Wer lieber mit der Maus arbeitet macht einen Rechtsklick auf die Script-Datei und wählt: Mit Powershell ausführen.
  • Alternativ lässt sich ein Script auch ohne das globale Ändern der ExecutionPolicy ausführen indem man die Policy als Parameter auf der Kommandozeile mitgibt:
powershell.exe -ExecutionPolicy RemoteSigned -File "C:\Pfad\Script.ps1"
Starten eines Scriptes in einer Powershell-Konsole
Immer den kompletten Pfad zum Script angeben, und wenn er Leerzeichen beinhaltet in Anführungszeichen einschließen:
"C:\Pfad\script.ps1"
Liegt das Script im selben Verzeichnis in dem man sich gerade befindet, kann man es auch so abkürzen:
.\script.ps1
Starten von PS-Scripten aus Batch und Kommandozeilen heraus:
Hier gibt es unterschiedliche Methoden, je nach Anforderungen gibt es hier einige Besonderheiten vor allem bei Leerzeichen in Pfaden zu beachten!
Der einfachste Aufruf sieht hier so aus:
powershell.exe -File "C:\Pfad\Script.ps1"
Wenn man dem Script Parameter übergeben möchte:
powershell.exe -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"
Wenn man "benannte" Parameter übergeben möchte (die einfachen Hochkommas um den Scriptpfad werden benötigt wenn er Leerzeichen beinhaltet):
powershell.exe -command "&'C:\Pfad\Script.ps1' -par1 'Wert1' -par2 'Wert2'"
Man kann auch mehrere Scripte hintereinander ausführen lassen:
powershell.exe -command "&'C:\Pfad\Script1.ps1';&'C:\Pfad\Script2.ps1'"
Weitere Parameter zeigt einem ein powershell -? in einer Konsole an.
Starten von PS-Scripten in der Aufgabenplanung (Taskplaner)
In der jeweiligen Aktion unter "Programm/Script" trägt man powershell.exe ein und unter "Argumente hinzufügen (optional)" trägt man wie oben geschrieben alles was hinter powershell.exe kommt ein - also z.B. -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"
Bitte warten ..
Mitglied: kaeptenblei
26.02.2015 um 11:10 Uhr
Hi Uwe,

sorry, musste gestern Abend plötzlich weg und danke für deine Hilfe.

Ich habe nochmals versucht, es funktioniert bei mir nicht.

Das habe ich gemacht:
Explorer --> Häkchen gesetzt bei "Vollständiger Pfad in derr Titelleiste anzeigen --> jetzt steht im Explorer Fenster z.B. F:\temp
CMD als Admin gestartet und powershell aufgerufen
Mit beiden Befehlen versucht, das Ausführen von Scripten im User-Account freischalten:
01.
Set-ExecutionPolicy RemoteSigned -Force 
02.
 
03.
Set-ExecutionPolicy RemoteSigned -Force; start-job { Set-ExecutionPolicy RemoteSigned -Force } -RunAs32
Bei der Ersten Zeile kommt keine "Antwort"
Bei der zweiten Zeile kommt eine Tabelle
ID Name State HasMoreDate Location Command
1 Job1 Running True localhost Set-ExecutionPo......

Dann habe ich oben die Zeilen (alle 3, natürlich getrennt voneinander) in eine Batch eingefügt und diese gestartet.

Leider kommt IMMER die Meldung, dass das Fenster nicht existiert. Egal ob der Explorer geöffnet ist, oder nicht.

Könnte es auch daran liegen, dass, wenn ich den Taskmanager öffne, der Explorer nur unter "Anwendungen" aufgelistet ist? Also gleiche Problem wie bei tasklist.

Vielleich hast Du noch eine Idee!?

Gruß
Frank
Bitte warten ..
Mitglied: colinardo
LÖSUNG 26.02.2015, aktualisiert um 12:19 Uhr
Zitat von kaeptenblei:
Mit beiden Befehlen versucht, das Ausführen von Scripten im User-Account freischalten:
Das ist alles OK ... ist aber normalerweise nicht nötig da die Executionpolicy in den obigen Commands stumm geschaltet wird ...
Leider kommt IMMER die Meldung, dass das Fenster nicht existiert. Egal ob der Explorer geöffnet ist, oder nicht.
Welches OS? Wurden hier alle auf Win7/Win8.1(x64) erfolgreich getestet.

Ahh moment (vergessen zu erwähnen), schalte in den Explorer-Optionen ein, dass jedes Explorer-Fenster in einem eigenen Prozess gestartet wird (ist sowieso eine Empfehlung) ! WICHTIG: Danach alle Fenster schließen und neu öffnen! Dann läuft es auch bei dir ...

e054c08e9b6d0dbb2d26e681229fa17d - Klicke auf das Bild, um es zu vergrößern

Grüße Uwe
Bitte warten ..
Mitglied: kaeptenblei
26.02.2015 um 12:19 Uhr
Hi Uwe,

DANKE!!!!! Das war's (Häkchen bei Ordnerfenster in einem eigenen Prozess starten). Jetzt läuft es auch bei mir unter Win7prof. x64.

Vielen Dank für deine Hilfe.

Gruß
Frank
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Energiesparoptionen per Batch überprüfen
Frage von csnr86Batch & Shell2 Kommentare

Hallo liebes Forum, nachdem ich hier schon viel gelesen habe, muss ich nun auch meine erste Frage stellen. Ich ...

Batch & Shell
Batch - Eingabe überprüfen
gelöst Frage von JantlemanBatch & Shell5 Kommentare

Hallo Community, ich beschäftige mich seit einigen Tagen mit Batch und habe beschlossen einen einfachen Sleeptimer zu programmieren. Bis ...

Batch & Shell
Batch - überprüfen, ob Speicherkarte schreibgeschützt ist
gelöst Frage von breppeBatch & Shell4 Kommentare

Hallo Leute, ich habe aktuell ein Problem, bei dem ich nicht so recht weiter komme. Ich habe mir einen ...

Batch & Shell
Batch: Login überprüfen
gelöst Frage von SpyeerBatch & Shell3 Kommentare

Hallo @ all, Ich habe mir eine Batch Datei geschrieben mit diversen Tools. Die Batch Datei fungiert als eine ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit29 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

SAN, NAS, DAS
Hilfe beim Einrichten eines Storages (SAN)
gelöst Frage von Vader666SAN, NAS, DAS15 Kommentare

Hallo Admins! Ich bin in einer kleineren Firma und hatte bisher mit dem Thema SAN nur in meiner Ausbildung ...

Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...