Prüfen ob eine Batch Datei läuft mit einer anderen Batch?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Die einfachste Variante wäre mit title in der ersten Batch dem Fenster einen unverkennbaren Namen zu geben.

@Echo öffnete
title rubbeldiekatz
Echo hallo ich soll gefunden werden....
pause

Nun prüfst du mit der zweiten Batch ob das Fenster mit dem Namen rubbeldiekatz in der Taskliste erscheint...

@echo off
tasklist /nh /fi "Windowtitle eq rubbeldiekatz" | find "cmd.exe"
if %errorlevel% equ 0 (
    echo Batch mit dem Titel rubbeldiekatz wird ausgeführt.
) else (
    echo Batch mit dem Titel rubbeldiekatz wird nicht ausgeführt.
)
pause

So in etwa sollte es funktionieren. Leider kann ich nicht testen, da ich die Batches nur aus der Hüfte auf dem Handy geschrieben habe.

tasklist /nh /fi "Windowtitle eq rubbeldiekatz"

Sollte in jedem Fall cmd..exe ausgeben und find filter alle Zeilen mit cmd.exe...

@echo off
for "tokens=*" %%a in ('tasklist /nh /fi "Windowtitle eq rubbeldiekatz" ^| find "cmd.exe" ') do (
    rem  zum testen, kann weg...
    echo bla und blubb %%a

    echo rubbeldiekatz laeuft
    goto :break
)
Rem wird nur gezeigt wenn kein cmd.exe in der Schleife erscheint...
echo laeuft nicht
:break
pause

Wie gesagt, ohne Gewähr ...ungetestet.

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

Man kann per Batch abfragen, welche Prozesse laufen. Auch, ob ein Prozess mit einem bestimmten Namen und wahrscheinlich auch Startparametern läuft.

Eine Batch-Datei wird von cmd.exe ausgeführt, danach müsste man also suchen können.

(Hab leider gerade keinen Computer griffbereit, um nachzusehen.)


Erzesel  05.03.2019, 13:31
wmic process get

...liefert für jeden laufenden Prozess folgenden Record (Hashtable/etc) zurück:

  • CreationClassName;
  • Caption;
  • CommandLine;
  • CreationDate;
  • CSCreationClassName;
  •   CSName;
  • Description;
  • ExecutablePath;
  • ExecutionState;
  • Handle;
  • HandleCount;
  • InstallDate;
  • KernelModeTime;
  • MaximumWorkingSetSize;
  • MinimumWorkingSetSize;
  • Name;
  • OSCreationClassName;
  • OSName;
  • OperationCount;
  • OtherTransferCount;
  • PageFaults;
  • PageFileUsage;
  • ParentProcessId;
  • PeakPageFileUsage;
  • PeakVirtualSize;
  • PeakWorkingSetSize;
  • Priority
  • PrivatePageCount;
  • ProcessId;
  • QuotaNonPagedPoolUsage;
  • uint32   QuotaPagedPoolUsage;
  • QuotaPeakNonPagedPoolUsage;
  • QuotaPeakPagedPoolUsage;
  • ReadOperationCount;
  • ReadTransferCount;
  • SessionId;
  • Status;
  • TerminationDate;
  • ThreadCount;
  • UserModeTime;
  • VirtualSize;
  • WindowsVersion;
  • WorkingSetSize;
  • WriteOperationCount;
  • WriteTransferCount;

...das dumme, nicht den Fenstertitel. Da kommt man leider nicht um Tasklist herum. Durch geschicktes kombinieren von Tasklist und Wmi- abfragen kann man nach so ziemlich allem Filtern...