@echo off setlocal EnableDelayedExpansion :: ------------------------------------------------- :: Admin privilege check (ALWAYS keep window open) :: ------------------------------------------------- net session >nul 2>&1 if %errorLevel% neq 0 ( powershell -Command "Start-Process '%~f0' -Verb RunAs" exit /b ) :: ================= Admin mode ================= echo ===================================== echo Firewall port open check (Admin) echo ===================================== echo. set RESULT=0 call :OPEN_PORT 16000 RS_Port_16000 echo ===================================== echo Summary: echo Port 16000 : !RESULT_16000! echo ===================================== if "%RESULT%"=="0" ( echo ALL PORTS OK ) else ( echo SOME PORTS FAILED ) echo. echo You can close this window manually. pause >nul goto :EOF :: ------------------------------------------------- :: Subroutine :: ------------------------------------------------- :OPEN_PORT set PORT=%1 set RULENAME=%2 set STATUS=UNKNOWN echo ---- Port %PORT% ---- netsh advfirewall firewall show rule name="%RULENAME%" >nul 2>&1 if %errorLevel%==0 ( set STATUS=ALREADY_EXISTS echo Result : ALREADY EXISTS goto SET_RESULT ) netsh advfirewall firewall add rule ^ name="%RULENAME%" ^ dir=in action=allow protocol=TCP localport=%PORT% >nul 2>&1 netsh advfirewall firewall show rule name="%RULENAME%" >nul 2>&1 if %errorLevel%==0 ( set STATUS=SUCCESS echo Result : SUCCESS ) else ( set STATUS=FAILED echo Result : FAILED set RESULT=1 ) :SET_RESULT if "%PORT%"=="16000" set RESULT_16000=%STATUS% echo. goto :EOF