Skip to content

Windows IP Changer Batch Script

윈도우즈용 IP 변경 Batch 스크립트 입니다.

최초 실행시 인터페이스 잡아주는 과정이 필요합니다. 최초 실행 및 인터페이스명 설정 완료 시 ipch.bat 파일이 존재하는 디렉토리에 ipch_cfg.txt 파일이 자동으로 작성됩니다. {: .block-warning}

  • CUI 메뉴

    • 스크립트 실행 시 CUI 메뉴로 진입합니다.
  • 커맨드로 사용 가능

    • Cmd 모드로 사용하려면 아래처럼 CIDR 형식, GW 순서로 작성해주시면 됩니다.
    • 예시 > ipch.bat 192.168.10.10/24 192.168.10.1

IP변경에는 관리자 권한 실행이 필요합니다. {: .block-warning}

아래 스크립트를 ipch.bat 파일로 저장하여, 바로가기 생성 후 바로가기에서 관리자 권한으로 실행하기 옵션 Enable 해주시면 편리합니다. {: .block-tip}

@echo off
setlocal enabledelayedexpansion

:: HEAD
title IPCH Script
mode con cols=90 lines=40
color F0

:: HEAD SET IPcmd Vars
set "dir=%~dp0"
set "cidr=%1"
set "gw=%2"

:: -- ENTRY FORKS --

:: ipch_cfg.txt 파일이 있으면 변수 로드
IF exist %dir%ipch_cfg.txt FOR /f "delims== tokens=1,2" %%G in (%dir%ipch_cfg.txt) do set %%G=%%H
:: ipch_cfg.txt 파일이 있어도 Target NIC 변수값이 없으면 Config 실행
IF "!tnic!X"=="X" GOTO _config
:: 파라미터가 있으면 IPcmd 실행
IF NOT "%*"=="" GOTO _IPcmd
:: ipch_cfg.txt 파일이 없으면 config 실행
IF NOT exist %dir%ipch_cfg.txt GOTO _config
GOTO _Menu 

:_Menu
cls
echo =========================================
echo =                                       =
echo =          IPCH script                  =
echo =                                       =
echo =========================================
echo = Current Directory is %dir%
echo = Target NIC is %tnicindex% %tnic%
echo =========================================
echo   1. Ethernet Static IP
echo   2. Ethernet DHCP IP
echo   3. Ethernet Secondary IP 추가
echo   4. Ethernet Secondary IP 삭제
echo   5. 내 IP 확인
echo =========================================
echo   c. IPCH 설정
echo   h. Command Mode 안내
echo   q. Exit
echo =========================================

set /p num=Choose the task : 
if "%num%"=="1" goto _IPstatic
if "%num%"=="2" goto _IPdhcp
if "%num%"=="3" goto _IPsecond
if "%num%"=="4" goto _IPseconddelete
if "%num%"=="5" goto _my_eth
if "%num%"=="q" goto _exit
if "%num%"=="c" goto _config
if "%num%"=="h" goto _help
goto _Menu

:_config
cls
echo ***** Interface List *****
netsh interface ipv4 show interface | findstr /V disconnected
echo **************************
set /p tnicindex=Choose a Target Network Interface: 

FOR /F "usebackq skip=3 tokens=1,5* delims= " %%G in (`netsh interface ipv4 show interface ^| findstr /V disconnected`) do ( 
    IF %%G==%tnicindex% set tnic1=%%H
    IF %%G==%tnicindex% set tnic2=%%I
    )
    IF "%tnic2%x"=="x" set tnic="%tnic1%"
    IF NOT "%tnic2%x"=="x" set tnic="%tnic1% %tnic2%"

echo Target NIC is %tnic%

(
    echo tnic=%tnic%
    echo tnicindex=%tnicindex%
    echo dir=%dir%
)>%dir%ipch_cfg.txt
goto _Success_menu


:_IPdhcp
netsh -c int ip set address name=%tnic% source=dhcp
goto _Success_menu

:_my_eth
netsh -c int ip show addresses %tnic%
pause
goto _Menu

:_IPstatic
echo 고정 IP를 설정합니다.
set /p addr=IP를 입력하세요 : 
set /p netmask=Network Mask를 입력하세요 : 
set gw="0.0.0.0"
set /p gw=게이트웨이를 입력하세요[기본값 0.0.0.0] : 
netsh -c int ip set address name=%tnic% source=static addr=%addr% mask=%netmask% gateway=%gw% gwmetric=0
::netsh interface ip set dns "%tnic%" static 8.8.8.8
goto _Success_menu

:_IPsecond
echo Secondary IP를 설정합니다.
set /p addr=IP를 입력하세요 : 
set /p netmask=Network Mask를 입력하세요 : 
set "gw=0.0.0.0"
set /p gw=게이트웨이를 입력하세요[기본값 0.0.0.0] : 

echo %tnic% "%addr%" "%netmask%" "%gw%"
pause
netsh -c interface ip add address name=%tnic% addr="%addr%" mask="%netmask%" gateway="%gw%"
::netsh interface ip set dns "%tnic%" static 8.8.8.8
goto _Success_menu


:_IPseconddelete
echo 설정된 Secondary IP를 삭제합니다.
set /p addr=삭제할 IP를 입력하세요 : 
netsh -c interface ip delete address name=%tnic% addr="%addr%"
goto _Success_menu



:_IPcmd
echo Target NIC is %tnicindex% %tnic%
echo %*
FOR /F "tokens=1,2 delims=/ " %%G in ("%cidr%") do (
    set addr="%%G"
    set cmask=%%H
)
IF "%cmask%"=="8" set mask="255.0.0.0"
IF "%cmask%"=="9" set mask="255.128.0.0"
IF "%cmask%"=="10" set mask="255.192.0.0"
IF "%cmask%"=="11" set mask="255.224.0.0"
IF "%cmask%"=="12" set mask="255.240.0.0"
IF "%cmask%"=="13" set mask="255.248.0.0"
IF "%cmask%"=="14" set mask="255.252.0.0"
IF "%cmask%"=="15" set mask="255.254.0.0"
IF "%cmask%"=="16" set mask="255.255.0.0"
IF "%cmask%"=="17" set mask="255.255.128.0"
IF "%cmask%"=="18" set mask="255.255.192.0"
IF "%cmask%"=="19" set mask="255.255.224.0"
IF "%cmask%"=="20" set mask="255.2550.240.0"
IF "%cmask%"=="21" set mask="255.255.248.0"
IF "%cmask%"=="22" set mask="255.255.252.0"
IF "%cmask%"=="23" set mask="255.255.254.0"
IF "%cmask%"=="24" set mask="255.255.255.0"
IF "%cmask%"=="25" set mask="255.255.255.128"
IF "%cmask%"=="26" set mask="255.255.255.196"
IF "%cmask%"=="27" set mask="255.255.255.224"
IF "%cmask%"=="28" set mask="255.255.255.240"
IF "%cmask%"=="29" set mask="255.255.255.248"
IF "%cmask%"=="30" set mask="255.255.255.252"
IF "%cmask%"=="31" set mask="255.255.255.254"

IF "%gw%x"=="x" set "gw=0.0.0.0"

echo %tnic% %addr% %mask% "%gw%"
pause
netsh -c int ip set address name=%tnic% source=static addr=%addr% mask=%mask% gateway="%gw%"

GOTO _Success_exit


:_help
cls
echo ===============================
echo =                             =
echo =      IPCH script            =
echo =                             =
echo ===============================
echo.
echo  - 메뉴에 들어오지 않고도 커맨드만으로 IP 변경이 가능합니다.
echo  - 아래 형식으로 실행하면 됩니다.
echo.
echo  ^>^> Usage \: echo ipch [IP Address/Netmask (CIDR)]
echo  ^>^> sample \: echo ipch 192.168.0.100/24
echo.
pause
GOTO _Menu

:_exit
echo 종료합니다.
pause
exit

:_Success_exit
cls
echo    The operation completed successfully.
pause > nul
GOTO _exit

:_Success_menu
echo    The operation completed successfully.
pause > nul
goto _Menu