mc-doubleyou
Goto Top

cmd Prozess mit Abfrage ob läuft und wenn nicht ...

Hallo Leute

hab da ein Problemchen

Kenne eigentlich den Code aber irgendwie startet er es nochmal auch wenn es schon läuft sonst arbeitet er eh alles ab

@echo OFF

tasklist |find "Nettalk.exe" >nul  
if %errorlevel% == 0 (
goto infium
) else (
start "Nettalk" G:\PortableApps\ntalk\Nettalk.exe  
goto infium
)

:infium

set qip="G:\PortableApps\QIP Infium\infium.exe"  

tasklist |find "infium.exe" >nul  
if %errorlevel% == 0 (
goto aMSN
) else (
start "Qip" %qip%  
goto aMSN
)

:aMSN

tasklist |find "aMSNPortable.exe" >nul  
if %errorlevel% == 0 (
goto u3
) else (
start "Nettalk" G:\PortableApps\aMSNPortable\aMSNPortable.exe  
goto u3
)

:u3

tasklist |find "LaunchU3.exe" >nul  
if %errorlevel% == 0 (
exit
) else (
start "LaunchU3" F:\LaunchU3.exe  
exit
)

Was mache ich falsch? Ist die Taskabfrage falsch?

bitte helfen *gg*

lg MC
Kommentar vom Moderator Biber am Oct 05, 2009 um 05:47:39 Uhr
Verschoben von "Entwicklung" nach "Batch & Shell".

Content-Key: 126355

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

Printed on: April 19, 2024 at 22:04 o'clock

Member: bastla
bastla Oct 03, 2009 at 18:17:26 (UTC)
Goto Top
Hallo mc-doubleyou!

Was genau das Problem ist, habe ich zwar noch nicht verstanden, aber zumindest eine etwas kompaktere Schreibweise könnte ich (ungetestet) empfehlen:
@echo off
tasklist|find "Nettalk.exe">nul||start "Nettalk" G:\PortableApps\ntalk\Nettalk.exe  
set qip="G:\PortableApps\QIP Infium\infium.exe"  
tasklist|find "infium.exe">nul||start "Qip" %qip%  
tasklist|find "aMSNPortable.exe">nul||start "Nettalk" G:\PortableApps\aMSNPortable\aMSNPortable.exe  
tasklist|find "LaunchU3.exe">nul||start "LaunchU3" F:\LaunchU3.exe  
Grüße
bastla
Member: mc-doubleyou
mc-doubleyou Oct 03, 2009 at 19:31:33 (UTC)
Goto Top
theoretisch klappts nur eben samt dem fehler

es geht darum:

läuft das programm schon starte es nicht nochmal wenn nicht starte es

bei einem einzelnen programm gings - aber so startet er es auch wenns schon läuft
Member: bastla
bastla Oct 03, 2009 at 19:40:24 (UTC)
Goto Top
Hallo mc-doubleyou!

Wenn das Programm (in exakt der angegebenen Schreibweise - also mit Berücksichtigung von Groß-/Kleinschreibung) im Ergebnis von "tasklist" enthalten ist, kann ich mir (weder bei Deiner noch bei meiner Schreibweise) erklären, warum es nochmals gestartet werden sollte ...

Um zumindest das "Groß-/Kleinschreibungsproblem" aus der Welt zu schaffen, kannst Du "find /i" verwenden (bzw, um es auch so versucht zu haben, "findstr /i").

Grüße
bastla
Member: mc-doubleyou
mc-doubleyou Oct 03, 2009 at 19:55:50 (UTC)
Goto Top
das /i wirkt wunder ^^

danke

im anderen thread meinte wer /i kann weg aber scheinbar doch nicht
Member: bastla
bastla Oct 03, 2009 at 20:07:52 (UTC)
Goto Top
Hallo mc-doubleyou!

TimoBeil hatte es im anderen Thread etwas verkürzt (aber nicht unrichtig) geschrieben - daher nochmals: "/i" brauchst Du dann tatsächlich nicht, wenn die Schreibweise in der "tasklist"-Ausgabe und in Deinem "find" exakt gleich (also zB jeweils alles in Kleinbuchstaben) ist. Da es aber (zumindest in diesem Fall) nicht schadet, die Option "/i" zu verwenden, bist Du damit auf der sicher(er)en Seite ...

Grüße
bastla
Member: mc-doubleyou
mc-doubleyou Oct 03, 2009 at 20:35:04 (UTC)
Goto Top
hi bastla

danke das hab ich eh verstanden dachte nur es wäre nich nötig was es nun scheinbar doch ist und in einem fall ist der task nicht ident mit der exe aber das weiß ich ja schon länger ^^

Danke an alle es klappt