# Does join.bat's :btwait loop wait for ANY btl4.exe, or only its own? # Run the EXACT fragment from join.bat while an unrelated btl4 is alive. $content = 'C:\git\bt411\content' $scratch = 'C:\Users\epilectrik\AppData\Local\Temp\claude\C--git-bt411\89ab96e9-6cf0-4555-939d-05bf3708745a\scratchpad' # an UNRELATED instance -- stands in for the operator's own pod, a second # client, or a genuine orphan. Nothing to do with the bat we are testing. $env:BT_LOG='btwait_other.log'; $env:BT_START_INSIDE='1' foreach ($v in 'BT_RELAY','BT_FE_LOOP','BT_SELF') { Remove-Item -LiteralPath "Env:\$v" -ErrorAction SilentlyContinue } $other = Start-Process 'C:\git\bt411\build\Release\btl4.exe' -ArgumentList '-egg','ARENA1.EGG' ` -WorkingDirectory $content -PassThru "unrelated btl4 running as pid $($other.Id)" Start-Sleep -Seconds 6 # the exact loop body from join.bat lines 55-63, minus the goto $frag = @' @echo off set "BT_STILL_RUNNING=" for /f "tokens=1" %%P in ('%SystemRoot%\System32\tasklist.exe /FI "IMAGENAME eq btl4.exe" /NH 2^>nul') do ( if /I "%%P"=="btl4.exe" set "BT_STILL_RUNNING=1" ) if defined BT_STILL_RUNNING (echo BTWAIT: would KEEP SPINNING -- terminal stays open) else (echo BTWAIT: would exit and print "The game has exited") '@ $fragPath = Join-Path $scratch 'btwait_frag.bat' Set-Content $fragPath $frag -Encoding Ascii '--- the bat that launched NOTHING now runs the wait loop ---' & cmd.exe /c $fragPath Stop-Process -Id $other.Id -Force -ErrorAction SilentlyContinue Start-Sleep -Seconds 2 '--- same loop with no btl4 anywhere ---' & cmd.exe /c $fragPath