WindowsでIISなどでPC上にサイトを追加したとき(ポートが80以外)にファイアウォールの例外として追加しないとだけど、毎回追加するのは面倒だったからバッチファイルを作っておいた。
@echo off
set C_FIREWALL=World Wide Web サービス
set VAL_YN=
set VAL_NAME=
set VAL_PORT=
set VAL_PROTOCOL1=
set VAL_PROTOCOL2=
echo;
echo ファイアウォールへサイトを例外として追加します。
echo ("Q"を入力するとキャンセルになります)
echo;
:INPUT_NAME
set /p VAL_NAME=サイト名:
if "%VAL_NAME%" == "" goto INPUT_NAME
if /I "%VAL_NAME%" == "Q" goto NO
:INPUT_PROTOCOL1
set /p VAL_PROTOCOL1=プロトコル {TCP,UDP,ALL} (TCP):
if "%VAL_PROTOCOL1%" == "" set VAL_PROTOCOL1=TCP
if /I "%VAL_PROTOCOL1%" == "Q" goto NO
:INPUT_PROTOCOL2
set /p VAL_PROTOCOL2=SSL? {Y/N} (N):
if "%VAL_PROTOCOL2%" == "" set VAL_PROTOCOL2=N
if /I "%VAL_PROTOCOL2%" == "Y" goto INPUT_PORT
if /I "%VAL_PROTOCOL2%" == "N" goto INPUT_PORT
if /I "%VAL_PROTOCOL2%" == "Q" goto NO
goto INPUT_PROTOCOL2
:INPUT_PORT
set /p VAL_PORT=ポート番号:
if "%VAL_PORT%" == "" goto INPUT_PORT
if /I "%VAL_PORT%" == "Q" goto NO
if /I "%VAL_PROTOCOL2%" == "Y" set VAL_PROTOCOL2=HTTPS
if /I "%VAL_PROTOCOL2%" == "N" set VAL_PROTOCOL2=HTTP
set VAL_FIREWALL=%C_FIREWALL% (%VAL_NAME% - %VAL_PROTOCOL2%:%VAL_PORT%)
echo;
echo 設定内容の確認:
echo NAME=%VAL_FIREWALL%
echo PROTOCOL=%VAL_PROTOCOL1%
echo PORT=%VAL_PORT%
echo;
:INPUT_YN
set /p VAL_YN=実行してもよろしいですか?(Y/N):
if "%VAL_YN%" == "" goto INPUT_YN
if /I "%VAL_YN%" == "N" goto NO
if /I "%VAL_YN%" == "Y" goto YES
goto INPUT_YN
:YES
netsh firewall add portopening protocol=%VAL_PROTOCOL1% port=%VAL_PORT% name="%VAL_FIREWALL%"
echo 登録されました。
PAUSE
goto :END
:NO
echo キャンセルされました。
:END