itazubii
Goto Top

Von Batchdatei ausgeführten Prozess benennen

Hallo zusammen,

ich habe zwei Batch-Dateien, die im Hintergrund Daten auf Server kopieren und löschen.
Wenn ich nun in den Task-Manager schaue steht unter "Prozessen" die beiden Prozesse als "cmd.exe" eingetragen.

Mir ist jedoch wichtig, dass die beiden Prozesse bestimmte Namen bekommen.
Als Beispiel: Wenn man Notepad öffnet, gibt es einen Prozess mit dem Namen "Notepad.exe".

Nun zu meiner Frage: Ist es möglich den Prozessnamen im Voraus zu bestimmen?

Vielen Dank schon mal und schöne Grüße

itazubii

Content-ID: 314513

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

Ausgedruckt am: 05.11.2024 um 20:11 Uhr

Kraemer
Lösung Kraemer 06.09.2016 aktualisiert um 15:21:23 Uhr
Goto Top
Moin,

TITLE ist dein Freund.

TITLE Ich heisse Test.bat

Gruß Krämer
itazubii
itazubii 06.09.2016 um 15:29:35 Uhr
Goto Top
Danke für die schnelle Antwort!

Das habe ich auch schon probiert, jedoch ändert sich dann nur der Fenstername bzw. der Taskname und nicht der Prozessname/Abbildname (bleibt leider "cmd.exe"

VG
Kraemer
Kraemer 06.09.2016 um 15:45:01 Uhr
Goto Top
Wenn ich nun in den Task-Manager schaue steht unter "Prozessen" die beiden Prozesse als "cmd.exe" eingetragen.

Nach dieser Aussage war ich gegangen. Und im Taskmanager sieht das dann so aus:

title

Den "Abbildnamen" wirst du nicht ändern können. Das Programm, welches ausgeführt wird, heißt nun mal cmd.exe (Ein Befehlszeileninterpreter)
Kraemer
Kraemer 06.09.2016 um 15:47:14 Uhr
Goto Top
Ich sehe gerade, das der Fenstertitel sich sogar mit taskkill referenzieren lässt. Nun frage ich mich, was du noch erreichen musst.
itazubii
itazubii 06.09.2016 um 15:59:17 Uhr
Goto Top
Ich muss in einem Monitoring-System den Prozessnamen angeben, damit ich überwachen kann, ob der Prozess läuft oder nicht.

Hier könnte ich natürlich "cmd.exe" angeben, jedoch würde er keinen Alarm schlagen, wenn nur eine der beiden Dateien nicht mehr laufen.
Die PIDs kommen übrigens natürlich auch nicht in Frage, weil diese sich jedes mal beim Neustart/neu Ausführen ändern.
AndreasHoster
Lösung AndreasHoster 06.09.2016 um 17:11:23 Uhr
Goto Top
Einfach eine Kopie der cmd.exe machen, mit einem anderen Namen speichern und dann die explizit benannte EXE mit der Batchdatei starten.
Für den Fall, daß man noch erklären muß, wie man eine Batch mit einer expliziten CMD.EXE Angabe startet:
Umbenannte_CMD.exe /C PFAD_ZUR_BATCH.CMD
itazubii
itazubii 06.09.2016 um 17:40:42 Uhr
Goto Top
Also entweder stehe ich auf dem Schlauch oder ihr versteht nicht was ich meine. Ich habe keine Datei die "cmd.exe" heißt.
Die batch-Datei macht einige Kopiervorgänge und gibt ein paar Informationen per Kommandozeile mit Hilfe von "echo" aus.

Dadurch enststeht der Prozess "cmd.exe" den ich am besten so genannt habe möchte wie die Batch-Datei heißt.

Hier die Datei:

@echo off

TITLE test.bat

set SOURCEPFAD=D:\ordner
set DESTPFAD=\\zielserver\zielordner
set FILES=*.xxx

:verarbeitung

if not exist %DESTPFAD% goto fehler1

rem set ZEIT=%TIME%
rem set DATUM=%DATE%
ECHO kopiervorgang startet
REM

robocopy %SOURCEPFAD% %DESTPFAD% %FILES% /MOV /MINAGE:1 /R:3 /W:5 /V /IPG:3

ECHO kopiervorgang beendet

ping localhost -n 600 > NUL
cls
goto verarbeitung


:fehler1

net use \\zielserver\zielordner %Passwort% /user:%user% /persistent:no > NUL
goto Verarbeitung


Wenn diese Datei ausgeführt wird gibt es natürlich einen Prozess dazu. Der heißt "cmd.exe"

Die einzige Frage von mir ist ob es möglich ist den Prozess von vorn hinein anders zu nennen.

Grüße
emeriks
Lösung emeriks 06.09.2016 um 18:22:33 Uhr
Goto Top
Hi,
was @AndreasHoster meint:
Wenn Du eine CMD "startest", dann ruft Windows die CMD.EXE auf und übergibt als Parameter den Pfad zur Batch.
Du kannst diese "CMD.EXE" kopieren, dabei einen anderen Namen geben. Dann diese Kopie starten mit Angabe des Pfads zur Batch-Datei, statt direkt die Batch zu starten. Könnte funktionieren ....

Oder
Kann "einem Monitoring-System" auch die Befehlszeile auswerten? Im Taskmanager kannst Du noch weitere Spalten einblenden lassen, so auch "Befehlszeile" oder im Englischen "command line". Dort erscheint in jedem Fall der Name der Batch-Datei.

E.
Friemler
Friemler 06.09.2016 um 21:06:50 Uhr
Goto Top
Hallo,

Die einzige Frage von mir ist ob es möglich ist den Prozess von vorn hinein anders zu nennen.

Nein, ist nicht möglich. Batchscripte können nicht direkt als Prozess ausgeführt werden, der Code darin muss zuerst interpretiert werden. Das macht das Programm CMD.EXE, die sog. Eingabeaufforderung, auch Konsole genannt. Deshalb taucht für jedes Batchscript im Taskmanager nur ein Prozess auf, bei dem in der Spalte "Abbildname" der Wert cmd.exe steht.

Die einzige Möglichkeit die Du hast, um die beiden laufenden Batchscripte zu unterscheiden, ist die Kommandozeile, mit der der jeweilige cmd.exe-Prozess gestartet wurde. Das geht folgendermaßen:
wmic process where "name='cmd.exe'" get commandline, processid

Das liefert die Kommandozeile und die Process-ID aller Prozesse, die den Namen cmd.exe haben.

Du musst die Ausgabe nur noch auswerten, dann kannst Du z.B. mit TASKLIST anhand der Process-ID prüfen, ob der Prozess noch läuft o.ä.

Gruß
Friemler
rubberman
rubberman 06.09.2016 um 22:06:33 Uhr
Goto Top
Hallo Friemler,

da hast du Recht. Und wenn du einmal wmic aufrufst, kannst du die Prüfung eigentlich auch gleich damit abfackeln.
@echo off &setlocal
set filenames="test1.bat","test2.bat"  

for /l %%i in () do (
  cls
  for %%j in (%filenames%) do (
    2>&1 >nul wmic Process WHERE "name='cmd.exe' AND commandline LIKE '%%\\%%~j%%'" GET |>nul find /v "" && ECHO ALARM %%j laeuft nicht!  
  )
  >nul timeout /t 2 /nobreak
)
... oder ähnlich.

Grüße
rubberman
Friemler
Friemler 06.09.2016 um 23:03:51 Uhr
Goto Top
Hallo rubberman,

na ja, ich dachte halt, wenn sich jemand schon itazubii nennt, sollte man ihm noch etwas Arbeit übrig lassen. Man kennt das ja mit dem Wachsen und den Aufgaben... face-wink

Gruß
Friemler
itazubii
itazubii 07.09.2016 um 12:24:05 Uhr
Goto Top
Danke an alle.
Hat jetzt funktioniert.

VG