Anderen Prozess deinen CMD Befehl ausführen lassen?
Hey!
Ich arbeite in einem batch script und möchte das ein anderer prozess meinen befehl ausführt.
Besser wäre natürlich wenn dieser nicht in der familie meines batch prozesses sind aber es würde auch helfen wenn das batch script als parent prozess einen neuen erstellt.
1 Antwort
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