Windows Defender Firewall Rule Creation Script For The Epic Games Launcher Application ( Updated 12/2024 )

The following batch files can be used to create a secure set of Windows Defender Firewall Rules on Windows 10 / 11, for the EPIC Games Launcher Application, and any applications located within a subdirectory, or the root directory of the Default Installation Folder path:

NOTE: On Windows 10 / 11: Right-click on the following batch file after saving it, and click “Run as administrator”.

(1.) Use Notepad to create this file on your desktop or another folder: EPIC_Launcher_App_Firewall_Rule_Creator.bat
@ECHO OFF
SETLOCAL EnableDelayedExpansion

IF NOT EXIST "%LocalAppData%\EpicGamesLauncher\Saved\Config\Windows\GameUserSettings.ini" GOTO EPIC_LAUNCHER_FR_WLL_LST_LNE
IF NOT EXIST "%ProgramFiles(x86)%\Epic Games" GOTO EPIC_LAUNCHER_FR_WLL_LST_LNE
IF NOT EXIST "%ProgramData%\Epic" GOTO EPIC_LAUNCHER_FR_WLL_LST_LNE

IF [%1]==[] GOTO EPIC_LAUNCHER_FR_WLL_SKP_LBL_1_
IF %1==BYPASS GOTO EPIC_LAUNCHER_FR_WLL_SKP_LBL_2_

:EPIC_LAUNCHER_FR_WLL_SKP_LBL_1_
CLS
CHOICE /C YN /N /M "CREATING FIREWALL RULES FOR: [%ProgramFiles(x86)%\Epic Games\] <- [Y/N] TO PROCEED?"
IF %ErrorLevel% EQU 2 GOTO EPIC_LAUNCHER_FR_WLL_LST_LNE
:EPIC_LAUNCHER_FR_WLL_SKP_LBL_2_

SET ALS_FrWll_STRT=EPIC_Launcher_App

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Remove-NetFirewallRule -DisplayName '%ALS_FrWll_STRT% * ( * )'}"

SET FRWLL_CNTR_NUM=1
SET FRWLL_INNR_CNTR_NUM=0
(SET FRWLLSRTRNGE_TMP_VAR_=)
(SET FRWLLSRTRNGE_TMP_VAR_2_=)
SET PDVAR_1=^^(
SET PDVAR_2=^^)

:EPIC_LAUNCHER_FR_WLL_SKP_LBL_3_
SET /A EPIC_LAUNCHER_FR_WLL_TST_SRT_VAR_4_+=1
CALL :EPIC_LAUNCHER_FR_WLL_CRTE_RLST_ "%ProgramData%\Epic\"
CALL :EPIC_LAUNCHER_FR_WLL_CRTE_RLST_ "%ProgramFiles(x86)%\Epic Games\"
FOR /F "usebackq tokens=* delims=" %%A IN (`TYPE "%LocalAppData%\EpicGamesLauncher\Saved\Config\Windows\GameUserSettings.ini" 2^>^&1`) DO (((ECHO %%A| FINDSTR /BLC:"VaultCacheDirectories" >nul 2>&1)&(IF !ErrorLevel! EQU 0 ((SET TMP_FRWLL_SRT_VAR_RLCRTE_1_=%%A)&(SET EPIC_LAUNCHER_FR_WLL_TST_SRT_VAR_3_=!TMP_FRWLL_SRT_VAR_RLCRTE_1_:~22!)&(CALL :EPIC_LAUNCHER_FR_WLL_PRE_SRT_))))&((ECHO %%A| FINDSTR /BLC:"DefaultAppInstallLocation" >nul 2>&1)&(IF !ErrorLevel! EQU 0 ((SET TMP_FRWLL_SRT_VAR_RLCRTE_2_=%%A)&(SET EPIC_LAUNCHER_FR_WLL_TST_SRT_VAR_3_=!TMP_FRWLL_SRT_VAR_RLCRTE_2_:~26!)&(CALL :EPIC_LAUNCHER_FR_WLL_PRE_SRT_)))))
FOR /F "usebackq tokens=* delims=" %%A IN (`REG QUERY "HKLM\SOFTWARE\WOW6432Node\Rockstar Games\Launcher" 2^> nul`) DO ((ECHO "%%A"| FINDSTR /LC:"InstallFolder" >nul 2>&1)&(IF !ErrorLevel! EQU 0 ((SET TMP_VAR_=%%A)&(CALL :EPIC_LAUNCHER_FR_WLL_CRTE_RLST_ "!TMP_VAR_:~31!\"))))
FOR /F "usebackq tokens=* delims=" %%A IN (`REG QUERY "HKLM\SOFTWARE\WOW6432Node\Rockstar Games\Rockstar Games Social Club" 2^> nul`) DO ((ECHO "%%A"| FINDSTR /LC:"InstallFolder" >nul 2>&1)&(IF !ErrorLevel! EQU 0 ((SET TMP_VAR_=%%A)&(CALL :EPIC_LAUNCHER_FR_WLL_CRTE_RLST_ "!TMP_VAR_:~31!\"))))
IF EXIST "%ProgramFiles(x86)%\EasyAntiCheat" CALL :EPIC_LAUNCHER_FR_WLL_CRTE_RLST_ "%ProgramFiles(x86)%\EasyAntiCheat\"
IF EXIST "%ProgramFiles(x86)%\EasyAntiCheat_EOS" CALL :EPIC_LAUNCHER_FR_WLL_CRTE_RLST_ "%ProgramFiles(x86)%\EasyAntiCheat_EOS\"
IF EXIST "%CommonProgramFiles(x86)%\BattlEye" CALL :EPIC_LAUNCHER_FR_WLL_CRTE_RLST_ "%CommonProgramFiles(x86)%\BattlEye\"
IF %EPIC_LAUNCHER_FR_WLL_TST_SRT_VAR_4_% EQU 1 GOTO EPIC_LAUNCHER_FR_WLL_SKP_LBL_3_

FOR /F "usebackq tokens=* delims=" %%A IN (`DIR /B /A:D "C:\Windows\Sys*" ^| FINDSTR /R "[0-9]"`) DO (FOR /F "usebackq tokens=* delims=" %%B IN (`DIR /B /S "C:\Windows\%%A\PnkBstr*.exe" 2^> nul`) DO ((CMD /Q /C START /MIN PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {New-NetFirewallRule -Action Allow -Direction Outbound -DisplayName '%ALS_FrWll_STRT% !FRWLL_CNTR_NUM! %PDVAR_1% %%~nB %PDVAR_2%' -Profile Any -Program '%%~sfB' -Protocol Any}")&(SET /A FRWLL_CNTR_NUM+=1)))

GOTO EPIC_LAUNCHER_FR_WLL_LST_LNE

:EPIC_LAUNCHER_FR_WLL_CRTE_RLST_
:EPIC_LAUNCHER_FR_WLL_CRTE_RLST_0_
IF %EPIC_LAUNCHER_FR_WLL_TST_SRT_VAR_4_% EQU 2 GOTO EPIC_LAUNCHER_FR_WLL_CRTE_RLST_1_
FOR /F "usebackq tokens=* delims=" %%A IN (`DIR /B /S "%~s1*.exe" 2^> nul`) DO (SET /A FRWLL_MAX_CNTR_NUM+=1)
GOTO EPIC_LAUNCHER_FR_WLL_CRTE_RLST_2_
:EPIC_LAUNCHER_FR_WLL_CRTE_RLST_1_
FOR /F "usebackq tokens=* delims=" %%A IN (`DIR /B /S "%~s1*.exe" 2^> nul`) DO ((SET _FRWLL_RL_SRT_=New-NetFirewallRule -Action Allow -Direction Outbound -DisplayName '%ALS_FrWll_STRT% !FRWLL_CNTR_NUM! %PDVAR_1% %%~nA %PDVAR_2%' -Profile Any -Program '%%~sfA' -Protocol Any;)&(SET FRWLLSRTRNGE_TMP_VAR_=!FRWLLSRTRNGE_TMP_VAR_2_!!_FRWLL_RL_SRT_!)&(SET FRWLLSRTRNGE_TMP_VAR_2_=!FRWLLSRTRNGE_TMP_VAR_!)&(SET /A FRWLL_CNTR_NUM+=1)&(SET /A FRWLL_INNR_CNTR_NUM+=1)&(IF !FRWLL_CNTR_NUM! GTR %FRWLL_MAX_CNTR_NUM% (CMD /Q /C START /MIN PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {!FRWLLSRTRNGE_TMP_VAR_2_!}"))&(IF !FRWLL_INNR_CNTR_NUM! EQU 25 ((CMD /Q /C START /MIN PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {!FRWLLSRTRNGE_TMP_VAR_2_!}")&(SET FRWLLSRTRNGE_TMP_VAR_2_=)&(SET FRWLL_INNR_CNTR_NUM=0))))
:EPIC_LAUNCHER_FR_WLL_CRTE_RLST_2_
GOTO :EOF

:EPIC_LAUNCHER_FR_WLL_PRE_SRT_
(SET EPIC_LAUNCHER_FR_WLL_TMP_VAR_=)
(SET EPIC_LAUNCHER_FR_WLL_TMP_VAR_2_=)

FOR /L %%A IN (1,1,100) DO (CALL :EPIC_LAUNCHER_FR_WLL_TST_ %%A)

(CALL :EPIC_LAUNCHER_FR_WLL_CRTE_RLST_ "%EPIC_LAUNCHER_FR_WLL_TMP_VAR_2_%")

GOTO EPIC_LAUNCHER_INNR_FRWLL_LST_LNE_
:EPIC_LAUNCHER_FR_WLL_TST_
FOR /F "usebackq tokens=%1 delims=/" %%A IN ('!EPIC_LAUNCHER_FR_WLL_TST_SRT_VAR_3_!') DO ((SET EPIC_LAUNCHER_FR_WLL_TMP_VAR_=!EPIC_LAUNCHER_FR_WLL_TMP_VAR_2_!%%A^\)&(SET EPIC_LAUNCHER_FR_WLL_TMP_VAR_2_=!EPIC_LAUNCHER_FR_WLL_TMP_VAR_!))
GOTO :EOF
:EPIC_LAUNCHER_INNR_FRWLL_LST_LNE_
GOTO :EOF

:EPIC_LAUNCHER_FR_WLL_LST_LNE

ENDLOCAL DisableDelayedExpansion
MOVE NUL 2>&0
(2.) Use Notepad to create this file on your desktop or another folder: Current_Directory_Temp_Firewall_Rule_Creator.bat
@ECHO OFF
SETLOCAL EnableDelayedExpansion

FOR /F "usebackq tokens=* delims=" %%A IN (`DIR /B /S "%~dp0*.exe" 2^> nul`) DO (SET /A FRWLL_MAX_CNTR_NUM+=1)

IF !FRWLL_MAX_CNTR_NUM! LSS 1 GOTO CRRNTDIRECTORY_APP_FR_WLL_LST_LNE

ECHO ...Creating %FRWLL_MAX_CNTR_NUM% Temporary Firewall Rules For The Current Directory
PAUSE

SET ALS_FrWll_STRT=Current_Directory_Temp_Rule

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Remove-NetFirewallRule -DisplayName '%ALS_FrWll_STRT% * ( * )'}"

SET FRWLL_CNTR_NUM=1
SET FRWLL_INNR_CNTR_NUM=0
(SET FRWLLSRTRNGE_TMP_VAR_=)
(SET FRWLLSRTRNGE_TMP_VAR_2_=)
SET PDVAR_1=^^(
SET PDVAR_2=^^)

FOR /F "usebackq tokens=* delims=" %%A IN (`DIR /B /S "%~dp0*.exe" 2^> nul`) DO ((SET _FRWLL_RL_SRT_=New-NetFirewallRule -Action Allow -Direction Outbound -DisplayName '%ALS_FrWll_STRT% !FRWLL_CNTR_NUM! %PDVAR_1% %%~nA %PDVAR_2%' -Profile Any -Program '%%~sfA' -Protocol Any;)&(SET FRWLLSRTRNGE_TMP_VAR_=!FRWLLSRTRNGE_TMP_VAR_2_!!_FRWLL_RL_SRT_!)&(SET FRWLLSRTRNGE_TMP_VAR_2_=!FRWLLSRTRNGE_TMP_VAR_!)&(SET /A FRWLL_CNTR_NUM+=1)&(SET /A FRWLL_INNR_CNTR_NUM+=1)&(IF !FRWLL_CNTR_NUM! GTR %FRWLL_MAX_CNTR_NUM% (CMD /Q /C START /MIN PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {!FRWLLSRTRNGE_TMP_VAR_2_!}"))&(IF !FRWLL_INNR_CNTR_NUM! EQU 25 ((CMD /Q /C START /MIN PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {!FRWLLSRTRNGE_TMP_VAR_2_!}")&(SET FRWLLSRTRNGE_TMP_VAR_2_=)&(SET FRWLL_INNR_CNTR_NUM=0))))

ECHO ...Removing %FRWLL_MAX_CNTR_NUM% Temporary Firewall Rules Created For The Current Directory
PAUSE

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Remove-NetFirewallRule -DisplayName '%ALS_FrWll_STRT% * ( * )'}"

:CRRNTDIRECTORY_APP_FR_WLL_LST_LNE

ENDLOCAL DisableDelayedExpansion
MOVE NUL 2>&0
(3.) Use Notepad to create this file on your desktop or another folder: Temp_Firewall_Rule_Generator.bat
@ECHO OFF
SETLOCAL EnableDelayedExpansion

((IF %Processor_Architecture%==ARM64 SET SDEL_EXT_=SDELETE64A)&(IF %Processor_Architecture%==AMD64 SET SDEL_EXT_=SDELETE64)&(IF %Processor_Architecture%==x86 SET SDEL_EXT_=SDELETE))

FOR /F "usebackq tokens=* delims=" %%A IN (`PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Get-CimInstance -ClassName Win32_Process | Format-List -Property CommandLine | Out-String -Stream -Width 32767 | Select-String -Pattern '.*\\cmd\.exe.*Temp_Firewall_Rule_Generator\.bat'}"`) DO (SET /A INITIAL_RL_TEST+=1)
IF NOT ["%INITIAL_RL_TEST%"]==["2"] (GOTO TMP_FRWLL_RL_LST_LBL_)

(SET MXVL_2_=0)
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Remove-NetFirewallRule -DisplayName 'TMP_FrWll_RL_*_'}"
(((IF EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" %SDEL_EXT_% -ACCEPTEULA -Q -R -NOBANNER "\\?\%~dp0FrWll_TMP_SRT_List_RLS_.txt")&(IF NOT EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" DEL /F /Q "\\?\%~dp0FrWll_TMP_SRT_List_RLS_.txt")) >nul 2>&1)

:TMP_FRWLL_RL_SRT_LBL_

(((IF EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" %SDEL_EXT_% -ACCEPTEULA -Q -R -NOBANNER "\\?\%~dp0FrWll_TMP_SRT_List_FLS_.txt")&(IF NOT EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" DEL /F /Q "\\?\%~dp0FrWll_TMP_SRT_List_FLS_.txt")) >nul 2>&1)
(((IF EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" %SDEL_EXT_% -ACCEPTEULA -Q -R -NOBANNER "\\?\%~dp0FrWll_TMP_SRT_List_CPY_.txt")&(IF NOT EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" DEL /F /Q "\\?\%~dp0FrWll_TMP_SRT_List_CPY_.txt")) >nul 2>&1)
((SET MXVL_0_=0)&(SET MXVL_1_=0))

((FOR /F "usebackq tokens=* delims=" %%A IN (`PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Get-CimInstance -ClassName Win32_Process | Format-List -Property ExecutablePath | Out-String -Stream -Width 32767 | Select-String -Pattern 'C:\\Users\\%UserName%\\AppData\\Local\\Temp', 'C:\\Windows\\Temp'}"`) DO ((SET TMP_FRWLLRL_VARQCKSRT_=%%A)&(FOR /F "usebackq tokens=* delims=" %%B IN (`ECHO !TMP_FRWLLRL_VARQCKSRT_:~17!`) DO (ECHO %%~sfB>> "%~dp0FrWll_TMP_SRT_List_FLS_.txt"))&(SET /A MXVL_0_+=1))) >nul 2>&1)

IF NOT EXIST "%~dp0FrWll_TMP_SRT_List_FLS_.txt" GOTO TMP_FRWLL_RL_SKP_LBL_2_
IF NOT EXIST "%~dp0FrWll_TMP_SRT_List_RLS_.txt" GOTO TMP_FRWLL_RL_SKP_LBL_0_
FOR /F "usebackq tokens=* delims=" %%A IN (`TYPE "%~dp0FrWll_TMP_SRT_List_FLS_.txt" 2^>^&1`) DO ((TYPE "%~dp0FrWll_TMP_SRT_List_RLS_.txt" | FINDSTR /LC:"%%A" >nul 2>&1)&(IF !ErrorLevel! EQU 1 ((ECHO %%A>> "%~dp0FrWll_TMP_SRT_List_CPY_.txt")&(SET /A MXVL_1_+=1))))
GOTO TMP_FRWLL_RL_SKP_LBL_1_
:TMP_FRWLL_RL_SKP_LBL_0_
FOR /F "usebackq tokens=* delims=" %%A IN (`TYPE "%~dp0FrWll_TMP_SRT_List_FLS_.txt" 2^>^&1`) DO (((ECHO %%A>> "%~dp0FrWll_TMP_SRT_List_CPY_.txt")&(SET /A MXVL_1_+=1)))
:TMP_FRWLL_RL_SKP_LBL_1_
IF %MXVL_1_% EQU 0 GOTO TMP_FRWLL_RL_SKP_LBL_2_
FOR /F "usebackq tokens=* delims=" %%A IN (`TYPE "%~dp0FrWll_TMP_SRT_List_CPY_.txt" 2^>^&1`) DO ((ECHO %%A>> "%~dp0FrWll_TMP_SRT_List_RLS_.txt")&(SET /A MXVL_2_+=1)&(CMD /Q /C START /MIN PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {New-NetFirewallRule -Action Allow -Direction Outbound -DisplayName 'TMP_FrWll_RL_!MXVL_2_!_' -Profile Any -Program '%%A' -Protocol Any}"))
:TMP_FRWLL_RL_SKP_LBL_2_

IF %MXVL_0_% EQU 0 (SET /A LAPSE_30_S_+=1) ELSE (SET LAPSE_30_S_=0)
CLS
ECHO:
ECHO [TEMPORARY FIREWALL RULES IN EFFECT:] %MXVL_2_%
ECHO [TEMPORARY PROCESSES IN MEMORY:] %MXVL_0_%
ECHO [RESET TIMER 0-30]: %LAPSE_30_S_%
ECHO:
IF %LAPSE_30_S_% EQU 30 (GOTO TMP_FRWLL_RL_LST_LBL_)
GOTO TMP_FRWLL_RL_SRT_LBL_

:TMP_FRWLL_RL_LST_LBL_

IF NOT ["%MXVL_2_%"]==["0"] (CMD /Q /C START /MIN PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Remove-NetFirewallRule -DisplayName 'TMP_FrWll_RL_*_'}")
(((IF EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" %SDEL_EXT_% -ACCEPTEULA -Q -R -NOBANNER "\\?\%~dp0FrWll_TMP_SRT_List_*_.txt")&(IF NOT EXIST "%SystemRoot%\System32\%SDEL_EXT_%.EXE" DEL /F /Q "\\?\%~dp0FrWll_TMP_SRT_List_*_.txt")) >nul 2>&1)

ENDLOCAL DisableDelayedExpansion
MOVE NUL 2>&0

NOTE: Most people use the root folder of the Default Installation Folder path, as the same install path for everything. In any other type of scenario, this may not work as expected. At that point, this batch file is a better choice, as it’s basically foolproof:

ALTERNATE: Use Notepad to create this file on your desktop or another folder: Simple_Firewall_Rule_Creator.bat
@ECHO OFF
SETLOCAL EnableDelayedExpansion

IF [%1]==[] GOTO SMPL_RL_CRTE_FR_WLL_SKP_LBL_1_
IF NOT %1==BYPASS GOTO SMPL_RL_CRTE_FR_WLL_SKP_LBL_1_

IF [%2]==[] GOTO SMPL_RL_CRTE_FR_WLL_SKP_LBL_1_
(ECHO %2| FINDSTR /R "[^0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]" >nul 2>&1)&(IF !ErrorLevel! EQU 0 (GOTO SMPL_RL_CRTE_FR_WLL_SKP_LBL_1_))
SET ALS_PRM_FrWll_VAR_=%2
SET ALS_FrWll_STRT=%ALS_PRM_FrWll_VAR_%

IF [%3]==[] GOTO SMPL_RL_CRTE_FR_WLL_SKP_LBL_1_

SET CNTR_FrwllVAR_=0
FOR %%A IN (%*) DO (IF EXIST %%A ((SET SMPL_PTH_TST_FrwllVAR_=%%~sfA)&((IF "!SMPL_PTH_TST_FrwllVAR_:~-1!"=="\" (IF EXIST "!SMPL_PTH_TST_FrwllVAR_:~0,-1!" (SET PTH_FrWll_STRT=!SMPL_PTH_TST_FrwllVAR_:~0,-1!)))&(IF NOT "!SMPL_PTH_TST_FrwllVAR_:~-1!"=="\" (SET PTH_FrWll_STRT=!SMPL_PTH_TST_FrwllVAR_!))&(SET RNGE_SMPLFRWLL_VAL_CHK_=0)&(IF !CNTR_FrwllVAR_! GTR 1 FOR /L %%A IN (1,1,!CNTR_FrwllVAR_!) DO (((ECHO !SMPLFRWLL_VAL_CHK_[%%A]_!| FIND "!PTH_FrWll_STRT!" >nul 2>&1)&(IF !ErrorLevel! EQU 0 (SET RNGE_SMPLFRWLL_VAL_CHK_=1)))))&(IF !RNGE_SMPLFRWLL_VAL_CHK_! EQU 0 ((SET /A CNTR_FrwllVAR_+=1)&(SET SMPLFRWLL_VAL_CHK_[!CNTR_FrwllVAR_!]_=!PTH_FrWll_STRT!))))))

IF !CNTR_FrwllVAR_! EQU 0 GOTO SMPL_RL_CRTE_FR_WLL_LST_LNE

GOTO SMPL_RL_CRTE_FR_WLL_SKP_LBL_2_

:SMPL_RL_CRTE_FR_WLL_SKP_LBL_1_

:RESET_LBL_FRWLL_RL_CRTE_SMPLE_
CLS
ECHO ...SELECT FOLDER NAME AND ALIAS FOR FIREWALL SCRIPT GENERATOR
SET /P PTH_PRM_FrWll_VAR_="[FOLDER NAME]: "
FOR /F "usebackq tokens=* delims=" %%A IN (`ECHO %PTH_PRM_FrWll_VAR_% 2^>^&1`) DO (IF NOT EXIST %%~sfA (GOTO RESET_LBL_FRWLL_RL_CRTE_SMPLE_))
SET /P ALS_PRM_FrWll_VAR_="[GROUP/ALIAS]: "
(ECHO %ALS_PRM_FrWll_VAR_%| FINDSTR /R "[^0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]" >nul 2>&1)&(IF !ErrorLevel! EQU 0 (GOTO RESET_LBL_FRWLL_RL_CRTE_SMPLE_))

IF "%PTH_PRM_FrWll_VAR_:~-1%"=="\" (IF EXIST "%PTH_PRM_FrWll_VAR_:~0,-1%" (SET PTH_FrWll_STRT=%PTH_PRM_FrWll_VAR_:~0,-1%))
IF NOT "%PTH_PRM_FrWll_VAR_:~-1%"=="\" (SET PTH_FrWll_STRT=%PTH_PRM_FrWll_VAR_%)

SET ALS_FrWll_STRT=%ALS_PRM_FrWll_VAR_%

CHOICE /C YN /N /M "FOLDER PATH: [%PTH_FrWll_STRT%] GROUP/ALIAS: [%ALS_FrWll_STRT%] <- [Y/N] TO PROCEED?"
IF %ErrorLevel% EQU 2 GOTO RESET_LBL_FRWLL_RL_CRTE_SMPLE_

SET CNTR_FrwllVAR_=1
FOR /F "usebackq tokens=* delims=" %%A IN (`ECHO %PTH_FrWll_STRT% 2^>^&1`) DO (SET SMPLFRWLL_VAL_CHK_[1]_=%%~sfA)

:SMPL_RL_CRTE_FR_WLL_SKP_LBL_2_

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Remove-NetFirewallRule -DisplayName '%ALS_FrWll_STRT% * ( * )'}"

SET FRWLL_CNTR_NUM=1
SET FRWLL_INNR_CNTR_NUM=0
(SET FRWLLSRTRNGE_TMP_VAR_=)
(SET FRWLLSRTRNGE_TMP_VAR_2_=)
SET PDVAR_1=^^(
SET PDVAR_2=^^)

FOR /L %%B IN (1,1,!CNTR_FrwllVAR_!) DO (FOR /F "usebackq tokens=* delims=" %%A IN (`DIR /B /S "!SMPLFRWLL_VAL_CHK_[%%B]_!\*.exe" 2^> nul`) DO (SET /A FRWLL_MAX_CNTR_NUM+=1))
FOR /L %%B IN (1,1,!CNTR_FrwllVAR_!) DO (FOR /F "usebackq tokens=* delims=" %%A IN (`DIR /B /S "!SMPLFRWLL_VAL_CHK_[%%B]_!\*.exe" 2^> nul`) DO (((SET _FRWLL_RL_SRT_=New-NetFirewallRule -Action Allow -Direction Outbound -DisplayName '%ALS_FrWll_STRT% !FRWLL_CNTR_NUM! %PDVAR_1% %%~nA %PDVAR_2%' -Profile Any -Program '%%~sfA' -Protocol Any;)&(SET FRWLLSRTRNGE_TMP_VAR_=!FRWLLSRTRNGE_TMP_VAR_2_!!_FRWLL_RL_SRT_!)&(SET FRWLLSRTRNGE_TMP_VAR_2_=!FRWLLSRTRNGE_TMP_VAR_!)&(SET /A FRWLL_CNTR_NUM+=1)&(SET /A FRWLL_INNR_CNTR_NUM+=1)&(IF !FRWLL_CNTR_NUM! GTR %FRWLL_MAX_CNTR_NUM% (CMD /Q /C START /MIN PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {!FRWLLSRTRNGE_TMP_VAR_2_!}"))&(IF !FRWLL_INNR_CNTR_NUM! EQU 25 ((CMD /Q /C START /MIN PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {!FRWLLSRTRNGE_TMP_VAR_2_!}")&(SET FRWLLSRTRNGE_TMP_VAR_2_=)&(SET FRWLL_INNR_CNTR_NUM=0))))))

:SMPL_RL_CRTE_FR_WLL_LST_LNE

ENDLOCAL DisableDelayedExpansion
MOVE NUL 2>&0

SIDE NOTE: If you put BYPASS in front of the first batch file, it will create a firewall ruleset for the app, and the all the associated games, unattended in the background:

CMD /Q /C START /MIN /REALTIME %UserProfile%\Desktop\EPIC_Launcher_App_Firewall_Rule_Creator.bat BYPASS

Alternate:

CMD /Q /C START /MIN /REALTIME /WAIT /B %UserProfile%\Desktop\EPIC_Launcher_App_Firewall_Rule_Creator.bat BYPASS