Anderen Prozess deinen CMD Befehl ausführen lassen?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Mit start wird das Aufgerufene Programm/Script immer in einem von der aufrufenden Batch losgelösten eigenständigen Prozess ausgeführt.

Ich habe keine Ahnung was Du mit "familie meines batch prozesses" meinst. Das der gestartete Prozess als Childprozess läuft spielt eigentlich keine Rolle.

Es sei denn, man wollte den aufrufenden Prozess mit Taskkill /t töten.

master.cmd

@echo off
start "" cmd /c "slave.cmd"
echo "slave.cmd" wurde gestartet
pause

Child.cmd

@echo off
echo ich bin %0
pause

Wenn (warum auch immer) beide Prozesse außerhalb der TreeStruktur existieren sollen, muss der Master eine Kopie seiner selbst als Kind starten und sich selbst beenden. Dann sind beide Kind-Prozesse "allein".

master.cmd

@echo off
set self=%~f0
if "%1" neq "" goto :%~1
cd %~dp0
 rem startet neue instanz von sich selbst
start "" cmd /c "%self%" secondMaster
 rem startet childprozess
start "" cmd /c "child.cmd"
echo Ich bin der original Master
 rem zur Demo mal einige sekunden warten
timeout 10
 rem selbst beenden 
exit /b

:secondMaster
 rem das folgende durch deinem kram ersetzen
echo hallo ich bin einfach ein Clon meines sterbenden Masters
pause
exit /b

...ist natürlich völliger Schwachsinn😵🤮🤪

Allerdings ist das gezeigte vorgehen nützlich um mehrere unabhängige Batchdateien in einer unterzubringen.

allinOne.cmd

@echo off
set self=%~f0
if "%1" neq "" goto :%~1
cd %~dp0
 rem startet neue instanz  von  sich selbst und  übergibt  als Parameter 1 zu welchem Label gesprungen  wird 
start "" cmd /c "%self%" Batch2
start "" cmd /c "%self%" Batch3


:batch1
echo Ich  bin Batch 1
pause
exit /b


:Batch2
echo Ich  bin Batch 2
pause
exit /b


:Batch3
echo Ich  bin Batch 3
pause
exit /b
Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren