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

Programm starten und von genau diesem die PID auslesen?

Frage Entwicklung Batch & Shell

Mitglied: Mauser

Mauser (Level 1) - Jetzt verbinden

06.05.2011 um 00:19 Uhr, 7595 Aufrufe, 3 Kommentare

Hallo an alle.

Ich hab das Forum durchforstet, aber irgendwie find ich nicht die Lösung, die ich suche oder ich schnall die einfach nicht.
01.
@echo off 
02.
 
03.
:1 
04.
 
05.
 C:\PFAD_ZU_PHP/php -f daemon.php -- -configdir "config" -logdir "log" 
06.
 
07.
 goto 1
Das Programm was hier gestartet wird lautet als Prozess: "php.exe"
Das ist bei mir aber mehrfach gestartet. Deshalb benötige ich die PID von der besagten php.exe.

Frage:

Kann ich irgendwie den oberen Batch-Quellcode so umbauen, dass mir die Batchdatei bei Start die PID in eine Datei reinschreibt?

Ich dachte mir das so:
01.
@echo off 
02.
 
03.
:1 
04.
set file=C:\Program\file.txt 
05.
if exists %file% del %file% 
06.
if not exists %file% makefile %file% 
07.
 
08.
 C:\PFAD_ZU_PHP/php -f daemon.php -- -configdir "config" -logdir "log" >> PID %file% 
09.
 
10.
 
11.
 goto 1
Kann das funktionieren?
Mitglied: 60730
06.05.2011 um 00:38 Uhr
moin,

irgendwo solltest du einen Beitrag finden, der sich fast genau darum dreht.

Im Prinzip..

  • Nimm das gatesverdammte

@echo off

raus..

Start "fenstertitel" php parameter usw.
  • und mit
Tasklist /FI ....
findest du die PID raus.

such mal - ich bin zu müde dafür.

Gruß
Bitte warten ..
Mitglied: Mauser
06.05.2011 um 02:39 Uhr
soweit bin ich ja schon. mit Tasklist PID´s rauszufinden ist ja kein Problem.
Doch dieses Fenster/Programm gibt es mehrfach. Alle mit gleichem Titel und der gleichen .EXE, Das einzige, worin sich diese unterscheiden,
ist die PID.

Also macht Tasklist doch nicht wirklich Sinn, oder doch?
Ich hab ja deshalb in meiner Frage geschrieben, dass ich genau diese PID von diesem gestarteten Fenster brauch.
Bitte warten ..
Mitglied: Friemler
06.05.2011 um 03:34 Uhr
Hallo Mauser,

hier mal ein Vorschlag von mir:

01.
@echo off 
02.
 
03.
setlocal 
04.
 
05.
set "ProgPath=abc" 
06.
set "Prog=xyz.exe" 
07.
 
08.
for /f "delims=" %%l in ('for /f "skip=3 tokens=2" %%p in ^('tasklist /fi "imagename eq %Prog%"'^) do @^<NUL set /p "=%%p "') do ( 
09.
  set "PIDs=%%l" 
10.
11.
 
12.
start "%Prog%" "%ProgPath%\%Prog%" 
13.
 
14.
for /f "skip=3 tokens=2" %%p in ('tasklist /fi "imagename eq %Prog%"') do ( 
15.
  echo %PIDs% | find "%%p" > NUL || if not defined NewPID set "NewPID=%%p" 
16.
17.
 
18.
if defined NewPID echo Neue Instanz: %NewPID%
Die erste FOR-Schleife erstellt eine Liste der PIDs aller z.Z. laufenden Instanzen des Programms. Dann wird in Zeile 12 das Programm gestartet. Die zweite FOR-Schleife ermittelt wieder die PIDs aller laufenden Instanzen des Programms und sucht jede von ihnen in der Liste, die die erste Schleife erstellt hat. Wenn die aktuell betrachtete PID darin nicht gefunden wird und die Variable NewPID noch keinen Wert hat, wird NewPID auf diesen Wert gesetzt. Wenn diese Variable zum Schluss einen Wert hat, wird er in Zeile 18 ausgegeben.

Das Programm muss in Zeile 12 mit dem Befehl START gestartet werden, da CMD sonst auf die Beendigung des Programms wartet.

Die erste FOR-Schleife besteht aus zwei geschachtelten Schleifen um ENABLEDELAYEDEXPANSION zu vermeiden.

Gruß
Friemler


[EDIT]
Code geändert:
  • Bugfix: In Zeile 8 @ vor ^<NUL ergänzt, sonst enthält die Liste nur ein Element
  • In Zeile 15 if not defined NewPID ergänzt, damit das Script auch funktioniert, wenn das zu startende Programm CMD.exe ist.
[/EDIT]
Bitte warten ..
Ähnliche Inhalte
Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(6)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(40)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Windows 10
gelöst Windows 10 Home "Netzlaufwerk nicht bereit" (19)

Frage von Oggy01 zum Thema Windows 10 ...

SAN, NAS, DAS
+100tb Storagelösung (13)

Frage von Data-Fabi zum Thema SAN, NAS, DAS ...

LAN, WAN, Wireless
Cisco W-Lan Controller als Applicance oder Software (11)

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

DNS
gelöst Komplette TLD Überschreiben bzw eigene Definieren (10)

Frage von Herbrich19 zum Thema DNS ...