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, 14145 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 ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (10)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...