Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
GELÖST

Nur Prozess per Batch starten wenn nicht vorhanden

Frage Entwicklung Batch & Shell

Mitglied: MuriBln

MuriBln (Level 1) - Jetzt verbinden

22.11.2005, aktualisiert 25.11.2005, 14204 Aufrufe, 6 Kommentare

Hallo,

ich hab folgendes Problem.
Wie bekomme ich ein Start eines Prozesses hin mit vorheriger Prüfung ob dieser schon läuft.
Kleines Beispiel: In meiner Batch werden zwei .exe Dateien gestartet, jedoch soll die erste nur gestartet werden, wenn diese noch nicht gestartet wurde.
Ich hoffe es ist verständlich, ich dachte an eine For Schleife mit Abfrage der laufenden Prozesse oder so...

Ich bekomme es leider nicht hin

Kann mir einer helfen?
Mitglied: Biber
22.11.2005 um 15:40 Uhr
Moin MuriBln,

ich würde es in diesem Fall nicht über (eigene) For-Schleifen machen, sondern mit einem dieser vielen Prozesslister. Ich glaube, sogar M$ liefert schon irgendetwas mit, aber ich verwende meist das "psList"-Utiltily von www.sysinternals.com.

Mit den meisten Prozess-Listern kannst Du gezielt nach einem Prozess fragen und bekommt ein ErrorLevel zurück, falls Prozess nicht vorhanden. Damit reduziert sich Dein Programmieraufwand auf eine halbe Zeile. Beispiel: Test, ob Internet-Explorer ("IEXPLORE") gestartet:
$MyPrompt$(pslist iexploder >nul) || @echo iexploder not found!
iexploder not found!

$MyPrompt$(pslist iexplore >nul) || @echo iexplore not found!
(alles ok, kommt kein echo)
oder, in Deinem Fall
$MyPrompt$(pslist MURIBLN >nul) || start x:\Pfad\dahin\MuriBln.exe

Falls Du einen Prozesslister benutzt, den Du nicht nach einzelnen Prozessen fragen kannst:

$MyPrompt$(otherPLister|find "MURIBLN" >nul) || start x:\Pfad\dahin\MuriBln.exe
Thats all. HTH
Biber
[Edit] Habe noch mal meinen Prompt, bisher dargestellt als ">"-Zeichen, geändert in "$MyPrompt$", um Verwechslungen zu vermeiden. [/Edit]
Bitte warten ..
Mitglied: MuriBln
22.11.2005 um 19:32 Uhr
Hi Biber,
danke für Deine Antwort, nur klappts leider noch nicht ganz..

Den PSList kenne ich, leider erstellt er eine Liste aller Prozesse auf dem Server.
Ich habe hier eine Terminal Server Umgebung und brauche nur die Taskliste des jeweiligen Benutzers. Daher habe ich mich entschlossen "Query Process" zu nutzen.

Wenn ich Deinen Beispielen folge habe ich leider diese Fehler.
Wenn ich ">(pslist iexplore >nul) || @echo iexplore not found!" ausführe, startet bei mir der Internet Explorer!?!
Und bei meinem Versuch ">("query process"|find iexplore >nul) || @echo iexplore not found!"
Kommt der Fehler > "|" ist syntaktisch an dieser Stelle nicht verarbeitbar.

Was mache ich Falsch?
Bitte warten ..
Mitglied: Biber
22.11.2005 um 21:59 Uhr
Hmm, MuriBln,

möglicherweise hast Du das Größerzeichen ">" mit eingegeben, mit dem ich nur meinen CMD-Prompt andeuten wollte.
Machs erst Schrittweise vom CMD-Prompt und kopier Dir dann die funktionierende Zeile in einen Editor bzw. in eine Batch-Datei.
(an CMD-Prompt)pslist
(erzeugt eine meterlange Liste)

PsList 1.26 - Process Information Lister
Copyright (C) 1999-2004 Mark Russinovich
Sysinternals - www.sysinternals.com

Process information for BIBERSBESTEN:

Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time
Idle 0 0 1 0 0 10:01:42.062 0:00:00.000
System 4 8 48 564 0 0:02:06.602 0:00:00.000
.....
IEXPLORE 1512 8 39 1216 50432 0:02:08.975 10:49:37.386
...
So oder ähnlich wird es auch bei Deinem Query-Tool sein - das hab ich nicht.

Step zwei: nur nachsehen, ob "IEXPLORE" dabei ist:
(am CMD-Prompt)pslist|find "IEXPLORE"
IEXPLORE 1512 8 39 1218 50432 0:02:09.526 11:00:50.834

Step drei: nur nachsehen, ob "IEXPLORE" dabei ist und den Output wegwerfen:
(am CMD-Prompt)pslist|find "IEXPLORE">nul
(am CMD-Prompt)echo %ErrorLevel%
(Output)0
0 bedeutet in dem Fall "gefunden", "1" würde "nicht gefunden" heißen.

Step 4:
(am CMD-Prompt)(pslist|find "IEXPLORE">nul) || Echo "nicht gefunden"

bedeutet: wenn das Krams in der Klammer "(....)" einen ErrorLevel > 0 erzeugt, dann echo bla

Wenn Du es bis hierhin hast (mit Deinem Query-Tool), dann schaffst Du den Rest ohne mich.
Grüße Biber
Bitte warten ..
Mitglied: MuriBln
24.11.2005 um 15:35 Uhr
Hi,
danke für Deine Geduld.

Jetzt hats auch bei mir geklappt...
Meine Zeile: (qprocess > find calc.exe >NUL: 2>&1)||if errorlevel 1 start calc.exe

Bye,
Muri
Bitte warten ..
Mitglied: Biber
24.11.2005 um 16:56 Uhr
Moin MuriBln,
freut mich, dass es klappt.
Nur der Vollständigkeit halber: das "||" und "if errorlevel 1" ist doppelt gemoppelt.
Der Batch kann nur auf der rechten Seite der "||"-Prüfung ankommen, wenn und weil ein Errorlevel 1 oder größer gesetzt ist. Kannst also das "if errorlevel 1" auch weglassen.

Schönen Abend Dir
Biber
Bitte warten ..
Mitglied: MuriBln
25.11.2005 um 15:04 Uhr
Rischtisch !

Danke noch mal.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Batch minimiert starten (3)

Frage von pdiddo zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch: CPU-Auslastung eines Prozesses auslesen und als Variable definieren (3)

Frage von tralveller zum Thema Batch & Shell ...

Batch & Shell
gelöst WinSCP in einer Batch starten durch Aufgabenplanung (13)

Frage von Xanathos57 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
CNC Maschinen verlieren Netzwerkverbindung (kurioser Fehler) (22)

Frage von NoHopeNoFear zum Thema LAN, WAN, Wireless ...

Drucker und Scanner
Erfahrungen mit Enterprise-Tintenstrahldruckern A4 und A3 (14)

Frage von User1000 zum Thema Drucker und Scanner ...

Webentwicklung
Aktuellen Mitarbeiter auf Homepage anzeigen (13)

Frage von alemanne21 zum Thema Webentwicklung ...