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-ID: 195216

Url: https://administrator.de/forum/ber-batch-pruefen-ob-batch-datei-geoeffnet-195216.html

Ausgedruckt am: 25.12.2024 um 01:12 Uhr

Freund.der.Nacht
Freund.der.Nacht 01.12.2012 aktualisiert um 22:09:24 Uhr
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
rubberman
rubberman 01.12.2012 aktualisiert um 22:29:04 Uhr
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
Alme123
Alme123 02.12.2012 um 08:37:45 Uhr
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]
blacksun
blacksun 07.05.2021 aktualisiert um 09:41:00 Uhr
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
rubberman
rubberman 07.05.2021 aktualisiert um 17:52:35 Uhr
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