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

Wie prüfen ob programm des gleichen namens aus unterschiedlichen ordnern gestartet ist

Frage Entwicklung Batch & Shell

Mitglied: DeathShadow

DeathShadow (Level 1) - Jetzt verbinden

17.12.2009, aktualisiert 19:47 Uhr, 5602 Aufrufe, 13 Kommentare

ich habe ein für mich großes problem und zwar habe ich mir eine batch datei geschrieben um zu prüfen ob ein brogramm gestartet ist oder nicht,
fals nicht wird das programm gestartet nun mein problem ...

ich muss dieses programm aus 2 unterschiedlichen ordnern gleichzeitig starten ...
ich prüfe es mit :

tasklist | findstr /i "<hier name>.exe" >>nul

nun der haken ... die beiden programme haben den gleichen namen und können nicht umbenannt werden.

ergo sagt er wenn brogramm ordner1/name.exe gestartet ist bei der brüfung ob ordner2/name.exe gestartet ist logischerweise auch ja ... :S

wie kann ich das realisieren das er den unterschied erkennt ...
Mitglied: rubberman
17.12.2009 um 20:55 Uhr
Hallo DeathShadow,

mir fällt da nur ein eingebundenes VBScript ein:
01.
@echo off &setlocal 
02.
>"%temp%\proc.vbs" echo Set objInstances = GetObject("winmgmts://./root\cimv2").InstancesOf("Win32_Process", 48) 
03.
>>"%temp%\proc.vbs" echo On Error Resume Next 
04.
>>"%temp%\proc.vbs" echo For Each objInstance in objInstances 
05.
>>"%temp%\proc.vbs" echo With objInstance 
06.
>>"%temp%\proc.vbs" echo WScript.Echo .Caption ^& ":" ^& .ExecutablePath 
07.
>>"%temp%\proc.vbs" echo End With 
08.
>>"%temp%\proc.vbs" echo On Error Goto 0 
09.
>>"%temp%\proc.vbs" echo Next 
10.
 
11.
cscript //nologo "%temp%\proc.vbs"|findstr /b /i /c:"irgendeine.exe" 
12.
 
13.
del "%temp%\proc.vbs" 
14.
pause
Zeile 11 lässt sich leicht in eine FOR Schleife mit Doppelpunkt als Delimiter einbinden.

Gruß
rubberman

PS: Etwas "Netikette" tut Not.
Bitte warten ..
Mitglied: DeathShadow
17.12.2009 um 21:05 Uhr
ok ich danke dir vielmals für deine schnelle hilfe ...
aber ich habe vergessen zu sagen das ich dies zum ersten mal machen ^^ ...

und ich verstehe jetzt nur bahnhof ... ich poste mal meine komplete .bat wäre mir sehr hilfreich wenn du mir die gelich so umschreibn könntest das es funktionier XD ... pls
01.
@echo off 
02.
set waittime=10 
03.
 
04.
 
05.
start server_start.bat 
06.
ECHO STARTE SERVER 
07.
 
08.
start /W Wait %waittime% 
09.
 
10.
:top 
11.
 
12.
tasklist | findstr /c:"C:\0.3.5\CWRealm.exe" >>nul 
13.
 
14.
if not "%errorlevel%"=="0" start CWRealm.exe & ECHO logon-server crashed ... starte neu 
15.
if "%errorlevel%"=="0" ECHO logon-server ist online 
16.
 
17.
 
18.
start /W Wait 2 
19.
 
20.
 
21.
tasklist | findstr /c:"C:\0.3.5\CWCore.exe" >>nul 
22.
 
23.
if not "%errorlevel%"=="0" start CWRealm.exe & ECHO main-server crashed ... starte neu 
24.
if "%errorlevel%"=="0" ECHO main-server ist online 
25.
 
26.
 
27.
 
28.
start /W Wait 2 
29.
 
30.
 
31.
tasklist | findstr /c:"C:\0.3.5\test-realm\CWCore.exe" >>nul 
32.
 
33.
if not "%errorlevel%"=="0" start test-realm\CWCore.exe & ECHO test-server crashed ... starte neu 
34.
if "%errorlevel%"=="0" ECHO test-server ist online 
35.
 
36.
 
37.
echo ____________________________________________________ 
38.
echo pruefe in %waittime%sec erneut 
39.
echo ____________________________________________________ 
40.
start /W Wait %waittime% 
41.
 
42.
goto top
dies ist mein bis jetzt letzter versuch ... hat wie zu erwarten auch nicht funktionier ... die bat startet die exen immer und immer wieder ...

danke im voraus
Bitte warten ..
Mitglied: Snowman25
17.12.2009 um 21:07 Uhr
Hallo DeathShadow,

mir fällt der der Processexplorer von SysInternals ein...
Viel Spaß damit

greetz Snow
Bitte warten ..
Mitglied: Biber
17.12.2009 um 21:14 Uhr
Moin rubberman,

Zeile 11 lässt sich leicht in eine FOR Schleife mit Doppelpunkt als Delimiter einbinden.
...oder aber du änderst gleich in der namenlosen .cmd-Datei (ich hab sie bei mir "rubbermansPslist.cmd" genannt die Zeile 11 in
01.
.... 
02.
cscript //nologo "%temp%\proc.vbs"|findstr /b /i /c:"%~1"  
03.
...
Bewirkt:
>e:\schnipsel\rubbermansPslist.cmd java.exe 
java.exe:C:\Programme\Java\jre6\bin\java.exe 
java.exe:C:\Programme\Java\jre6\bin\java.exe 
Drücken Sie eine beliebige Taste . . .
[okay, sind zwei instanzen aus dem gleichen Pfad in dem Beispiel...]

Grüße
Biber
Bitte warten ..
Mitglied: DeathShadow
17.12.2009 um 22:03 Uhr
ok ok nochmals vielen dank für eure antworten nur leider hilft mir persöhnlich das nicht weiter ...
ist von euch villeicht einer so nett und schreibt mein script um (müste ja ersichtlich sein was es bewirken soll)

da ich dieses script dringend brauche (am besten schon gestern) und ich im moment leider nicht die zeit habe mich in die materie ein zu arbeiten (was aber bestimmt noch kommen wird )

Mit freundlichen Grüßen

Der Death
Bitte warten ..
Mitglied: rubberman
17.12.2009 um 22:04 Uhr
Hallo Zusammen.

@Snowman25
Dein Link ist bei mir irgendwie down ?! Weiß also nicht wie man das in ein Batchfile einbinden könnte.
<edit>Link ist doch nicht down. So wie ich das sehe ist das aber ausschließlich eine GUI Anwendung.</edit>

@Biber
als "Stand-Allone" hast Du natürlich Recht. Hatte allerdings im Sinn, diese Zeile ähnlich TASKLIST direkt im Batch zu verwursten.

@DeathShadow
Wenn ich das ganze richtig verstehe, ungefähr so (UNGETESTET):

01.
@echo off &setlocal 
02.
set waittime=10 
03.
 
04.
start server_start.bat 
05.
ECHO STARTE SERVER 
06.
 
07.
start /W Wait %waittime% 
08.
 
09.
:top 
10.
 
11.
>"%temp%\proc.vbs" echo Set objInstances = GetObject("winmgmts://./root\cimv2").InstancesOf("Win32_Process", 48) 
12.
>>"%temp%\proc.vbs" echo On Error Resume Next 
13.
>>"%temp%\proc.vbs" echo For Each objInstance in objInstances 
14.
>>"%temp%\proc.vbs" echo With objInstance 
15.
>>"%temp%\proc.vbs" echo WScript.Echo .ExecutablePath 
16.
>>"%temp%\proc.vbs" echo End With 
17.
>>"%temp%\proc.vbs" echo On Error Goto 0 
18.
>>"%temp%\proc.vbs" echo Next 
19.
 
20.
cscript //nologo "%temp%\proc.vbs"|findstr /l /i /c:"C:\Easy WoW Server\0.3.5\CWRealm.exe">nul && ECHO logon-server ist online || (start CWRealm.exe &ECHO logon-server crashed ... starte neu) 
21.
 
22.
start /W Wait 2 
23.
 
24.
cscript //nologo "%temp%\proc.vbs"|findstr /l /i /c:"C:\Easy WoW Server\0.3.5\CWCore.exe">nul && ECHO main-server ist online || (start CWCore.exe &ECHO main-server crashed ... starte neu ) 
25.
 
26.
start /W Wait 2 
27.
 
28.
cscript //nologo "%temp%\proc.vbs"|findstr /l /i /c:"C:\Easy WoW Server\0.3.5\test-realm\CWCore.exe">nul && ECHO test-server ist online || (start test-realm\CWCore.exe &ECHO test-server crashed ... starte neu) 
29.
 
30.
del "%temp%\proc.vbs" 
31.
 
32.
echo ____________________________________________________ 
33.
echo pruefe in %waittime%sec erneut 
34.
echo ____________________________________________________ 
35.
start /W Wait %waittime% 
36.
 
37.
goto top
<edit>DeathShadow's Änderungen hinzugefügt</edit>

Grüße
rubberman
Bitte warten ..
Mitglied: DeathShadow
17.12.2009 um 22:08 Uhr
du bist ein gott XD ... nur leider geht es nicht ... die exen werden gestartet obwohl sie schon laufen ...

Mit freundlichen Grüßen

Der Death
Bitte warten ..
Mitglied: rubberman
17.12.2009 um 22:27 Uhr
Danke für die Blumen, aber Götter schreiben nicht in Foren.
Hatte ca 30 Sekunden nachdem ich das gepostet hatte die Option /b hinter findstr noch entfernt. Hoffe da hat sich nix überschnitten. Prüf mal.

Grüße
rubberman
Bitte warten ..
Mitglied: DeathShadow
17.12.2009 um 22:32 Uhr
doch hatte es sich ... hab ich entfernt ... nun sagt er mir aber das die exen laufen obwohl sie nicht laufen ... ...

Mit freundlichen Grüßen

Der Death
Bitte warten ..
Mitglied: rubberman
17.12.2009 um 22:42 Uhr
Das macht mich einigermaßen ratlos. Hast du mal parallel im Taskmanager geschaut, ob die Prozesse nicht doch im Hintergrund laufen?

Grüße
rubberman
Bitte warten ..
Mitglied: DeathShadow
17.12.2009 um 22:47 Uhr
ja hab ich ... sie laufen 100% nicht... zumindest nicht bei meinem benutzer konto ... kann es sein das dieses script user übergreifend ist ??
denn beim admin user laufen sie bereits

ich erstelle es nur um es zu testen und dan beim admin zu starten ... fals die server crashen das sie automatisch neu gestartet werden ...

Mit freundlichen Grüßen

Der Death

edit:
ich werde es mal testen ich starte das script mal beim admin und lasse mal ein server crashen ... mal schauen was passiert ^^

edit2:
script gestartet ... exe beendet ---> behauptet läuft ... ...

edit3:

ich habe mal selber etwas drin rum gebastelt und aus der zeile
01.
... 
02.
findstr /l /i /c:"Easy WoW Server\ ... 
03.
...
das gemacht
01.
... 
02.
findstr /l /i /c:"C:\Easy WoW Server\ ... 
03.
...
siehe da es geht ... und es ist user übergreifend ... hatte mich gewundert das er bei der ersten CWCore sagt das sie gecrasht ist und bei den anderen sie seien online ... und da war die beim admin wirklich gecrasht ... naja also problem gelöst ... THX
Bitte warten ..
Mitglied: rubberman
17.12.2009 um 23:10 Uhr
Yepp, userübergreifend muss das ganze sein. Werde mal auf den msdn Seiten forschen, wie die Chancen stehen, das noch in Abhängigkeit vom User zu bewerkstelligen. Falls ich was finden sollte, melde ich mich noch mal.

Grüße
rubberman
Bitte warten ..
Mitglied: rubberman
18.12.2009 um 23:51 Uhr
@ alle, die wissen wollen wie man den User (Process Owner) auch noch bekommt ...
die erste "unbenannte" mal in leicht abgewandelter Form:
01.
@echo off &setlocal 
02.
>"%temp%\proc.vbs" echo Set objInstances = GetObject("winmgmts://./root\cimv2").InstancesOf("Win32_Process", 48) 
03.
>>"%temp%\proc.vbs" echo On Error Resume Next 
04.
>>"%temp%\proc.vbs" echo For Each objInstance in objInstances 
05.
>>"%temp%\proc.vbs" echo With objInstance 
06.
>>"%temp%\proc.vbs" echo ret = .GetOwner(strOwner) 
07.
>>"%temp%\proc.vbs" echo WScript.Echo .Caption ^& ":" ^& strOwner ^& ":" ^& .ExecutablePath 
08.
>>"%temp%\proc.vbs" echo End With 
09.
>>"%temp%\proc.vbs" echo On Error Goto 0 
10.
>>"%temp%\proc.vbs" echo Next 
11.
 
12.
for /f "delims=: tokens=1,2*" %%a in ('cscript //nologo "%temp%\proc.vbs"') do echo.%%a&echo.%%b&echo.%%c&echo ********* 
13.
del "%temp%\proc.vbs" 
14.
pause
@ DeathShadow
bekommst Du sicher selbst eingebaut, oder ?

Grüße
rubberman
Bitte warten ..
Neuester Wissensbeitrag
Festplatten, SSD, Raid

12TB written pro SSD in 2 Jahren mit RAID5 auf Hyper-VServer

Erfahrungsbericht von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

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

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...