목적
hosts에 아래 주소 추가
- 192.168.0.200 www.test1.com
- 1번의 작업하는 과정에서 기존 hosts 내 화살표 같은 특수문자(아래 그림)로 인해
이후 추가된 주소는 인식 못하는 증상 발견 - 결국 2번의 기존 주소(172.16.0.10 oldaddr.com) 중 특수문자 삭제하고 1번 주소 추가하고자 함 (add_host.bat)
- 1~3번 작업 후 일정 기간 경과하여 다시 1번의 주소 삭제하고자 함 (remove_host.bat)
[Add_host.bat]
set hosts=%windir%\system32\drivers\etc\hosts
attrib -r %hosts%
find /C /I "www.test1.com" %hosts%
IF %ERRORLEVEL% EQU 0 goto END
set NEWLINE=^& echo.
set filename=%date%_%time:~0,2%%time:~3,2%%time:~6,2%
ren %temp%\hostback.txt hostback_%filename%.txt
findstr /I /V "oldaddr.com" %hosts%>>%temp%\hostback.txt
ren %hosts% hosts_%filename%
type %temp%\hostback.txt>>%hosts%
find /C /I "oldaddr.com" %hosts%
IF %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%>>%hosts%
find /C /I "oldaddr.com" %hosts%
IF %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%^172.16.0.10 oldaddr.com>>%hosts%
find /C /I "www.test1.com" %hosts%
IF %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%^192.168.0.200 www.test1.com>>%hosts%
:END
exit
[remove_host.bat]
set hosts=%windir%\system32\drivers\etc\hosts
attrib -r %hosts%
find /C /I "www.test1.com" %hosts%
IF %ERRORLEVEL% NEQ 0 goto END
set filename=%date%_%time:~0,2%%time:~3,2%%time:~6,2%
ren %temp%\hostback.txt hostback_%filename%.txt
findstr /I /V "www.test1.com" %hosts%>>%temp%\hostback.txt
ren %hosts% hosts_%filename%
type %temp%\hostback.txt>>%hosts%
:END
exit
hosts 원본
add_host.bat 실행 후 hosts 내용 및 etc 폴더 내용
remove_host.bat 실행 후 hosts 내용 및 etc 폴더 내용
참고사이트
http://www.snoopybox.co.kr/1404
http://mwultong.blogspot.com/2007/03/bat-time-to-file-name.html
https://www.computing.net/answers/programming/batch-to-editdelete-an-ip-from-hosts-file/24358.html
https://stackoverflow.com/questions/3666740/windows-batch-how-to-add-host-entries