alme123
Goto Top

Ber Batch prüfen, ob Batch Datei geöffnet

Hallo zusammen,

ich habe folgendes Problem:

ich brauche eine Batch (oder Vbs), die prüft, ob eine BatchDatei geöffnet ist oder nicht.
per tasklist geht es nicht, denn eine batchdatei ist von cmd.exe abhängig.


Danke im Vorraus,

Alme123

Content-Key: 195216

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

Printed on: April 26, 2024 at 04:04 o'clock

Member: Freund.der.Nacht
Freund.der.Nacht Dec 01, 2012 updated at 21:09:24 (UTC)
Goto Top
Hallo Alme123,

das ist recht einfach:

du musst es über die PID machen:

@echo off

::Sprungmarke
:start

::Taskliste bevor Batch gestartet ist
tasklist /V>%temp%\vor.txt

::Batch starten
start "" test.bat  

::Taskliste nachdem Notepad gestartet ist
tasklist /V>%temp%\nach.txt

::Prozess ID des Scripts herausfiltern
for /F "tokens=2 delims= " %%i in ('fc %temp%\vor.txt %temp%\nach.txt^|find "cmd.exe"') do set PID=%%i  

::Prozess ID ausgabe
echo PID: %PID%

pause

::temporäre Dateien löschen
del %temp%\vor.txt
del %temp%\nach.txt

::mit Ping eine Pause von 5 Sekunden einlegen
ping -n 5 127.0.0.1 > NUL

::prüfen, ob Batch noch läuft
tasklist | findstr /i %PID%

::wenn die Batch nicht mehr läuft
if not %errorlevel%==0 goto start

MfG
Batch-Lord
Member: rubberman
rubberman Dec 01, 2012 updated at 21:29:04 (UTC)
Goto Top
Hallo Alme123.

Zitat von @Alme123:
per tasklist geht es nicht, denn eine batchdatei ist von cmd.exe abhängig.
Wenn du deinem Batch einen aussagekräftigen Fenstertitel verpassen würdest, ginge das schon. Schau dir die Hilfe zu TASKLIST an, ein entsprechender Filter lässt sich leicht setzen.

Alternativ kannst du den Pfad der Batchdatei in der Kommandozeile suchen. In einer Batchdatei per WMIC.
@echo off &setlocal
set "filepath=C:\pfad zur\Batchdatei.bat"  

WMIC process Where "Name='cmd.exe' And CommandLine Like '%%%filepath:\=\\%%%'" 2>nul | findstr . >nul &&(  
  echo laeuft
) || (
  echo laeuft nicht
)
pause

Grüße
rubberman
Member: Alme123
Alme123 Dec 02, 2012 at 07:37:45 (UTC)
Goto Top
Hi rubberman,

dein Lösungsvorschlag und der von Batch-Lord funktionieren bestens, ich entscheide mich für deinen, weil er weniger Schritte braucht.

Alme123

[Theard Closed]
Member: blacksun
blacksun May 07, 2021 updated at 07:41:00 (UTC)
Goto Top

du musst es über die PID machen:

@echo off

::Sprungmarke
:start

::Taskliste bevor Batch gestartet ist
tasklist /V>%temp%\vor.txt

::Batch starten
start "" notepad.exe "c:\temp\meinHinweis.txt"  

::Taskliste nachdem Notepad gestartet ist
tasklist /V>%temp%\nach.txt

::Prozess ID des Scripts herausfiltern
for /F "tokens=2 delims= " %%i in ('fc %temp%\vor.txt %temp%\nach.txt^|find "cmd.exe"') do set PID=%%i  

::Prozess ID ausgabe
echo PID: %PID%

pause

Hallo,

wie suche ich am besten nach dem Fenstertitel der mir durch tasklist /V ausgegeben wird.
Ich möchte die PID herausfinden bei der der Fenstertitel "meinHinweis.txt - Editor" ist.

Vielen Dank schonmal
Member: rubberman
rubberman May 07, 2021 updated at 15:52:35 (UTC)
Goto Top
Zitat von @blacksun:
wie suche ich am besten nach dem Fenstertitel der mir durch tasklist /V ausgegeben wird.
Ich möchte die PID herausfinden bei der der Fenstertitel "meinHinweis.txt - Editor" ist.

Dieser Thread ist uralt, als gelöst markiert und behandelt ein völlig anderes Thema...

for /f tokens^=3^ delims^=^" %%i in ('tasklist /nh /fo csv /fi "windowtitle eq meinHinweis.txt - Editor"') do echo PID ist %%i  

Steffen