Files
ds18b20-MODBUS/john103C6T6NewVer/start_server.bat
2026-06-25 17:25:41 +03:00

79 lines
3.0 KiB
Batchfile

@echo off
setlocal EnableExtensions EnableDelayedExpansion
cd /d "%~dp0"
set "HOST=127.0.0.1"
set "PID_FILE=%~dp0server.pid"
set "URL_FILE=%~dp0server.url"
if exist "%PID_FILE%" (
set /p OLD_PID=<"%PID_FILE%"
if defined OLD_PID (
tasklist /FI "PID eq %OLD_PID%" 2>NUL | find "%OLD_PID%" >NUL
if not errorlevel 1 (
echo Server is already running. PID: %OLD_PID%
if exist "%URL_FILE%" (
set /p URL=<"%URL_FILE%"
) else (
set "URL=http://%HOST%:8080"
)
echo URL: !URL!
start "" "!URL!"
pause
exit /b 0
)
)
del "%PID_FILE%" >NUL 2>NUL
)
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
"$ErrorActionPreference='Stop';" ^
"$wd=(Resolve-Path -LiteralPath '%~dp0').Path;" ^
"$py=Get-Command py -ErrorAction SilentlyContinue;" ^
"$python=$null;" ^
"if($py){$python=(& $py.Source -3 -c 'import sys; print(sys.executable)' 2>$null | Select-Object -First 1)};" ^
"if(-not $python){$cmd=Get-Command python -ErrorAction SilentlyContinue; if($cmd){$python=$cmd.Source}};" ^
"if(-not $python -or -not (Test-Path -LiteralPath $python)){Write-Host 'Python was not found. Install Python or add it to PATH.'; exit 1};" ^
"$ports=@(8080,8090,8081,8000,5000,5500,18080,18081,28080,28081,49152,49153,49200);" ^
"$last='';" ^
"foreach($port in $ports){" ^
" Remove-Item -LiteralPath (Join-Path $wd 'server.out.log') -Force -ErrorAction SilentlyContinue;" ^
" Remove-Item -LiteralPath (Join-Path $wd 'server.err.log') -Force -ErrorAction SilentlyContinue;" ^
" $args=@('serial_bridge.py','--host','%HOST%','--port',[string]$port);" ^
" try{$p=Start-Process -FilePath $python -ArgumentList $args -WorkingDirectory $wd -WindowStyle Hidden -RedirectStandardOutput (Join-Path $wd 'server.out.log') -RedirectStandardError (Join-Path $wd 'server.err.log') -PassThru}catch{$last=$_.Exception.Message; continue};" ^
" Start-Sleep -Milliseconds 900;" ^
" $p.Refresh();" ^
" if(-not $p.HasExited){" ^
" $url='http://%HOST%:' + $port;" ^
" $p.Id | Set-Content -Encoding ASCII -LiteralPath (Join-Path $wd 'server.pid');" ^
" $port | Set-Content -Encoding ASCII -LiteralPath (Join-Path $wd 'server.port');" ^
" $url | Set-Content -Encoding ASCII -LiteralPath (Join-Path $wd 'server.url');" ^
" Write-Host ('Started server PID: ' + $p.Id);" ^
" Write-Host ('URL: ' + $url);" ^
" exit 0;" ^
" }" ^
" if(Test-Path -LiteralPath (Join-Path $wd 'server.err.log')){$last=Get-Content -LiteralPath (Join-Path $wd 'server.err.log') -Raw}" ^
"}" ^
"Write-Host 'Server exited immediately on all candidate ports. Check server.err.log.';" ^
"if($last){Write-Host $last};" ^
"exit 1;"
if errorlevel 1 (
echo Failed to start server.
echo See server.err.log if it was created.
pause
exit /b 1
)
if exist "%URL_FILE%" (
set /p URL=<"%URL_FILE%"
) else (
set "URL=http://%HOST%:8080"
)
echo Server started.
echo URL: !URL!
echo Logs: server.out.log and server.err.log
start "" "!URL!"
pause