标题: [系统相关] 修改hots文件 [打印本页]
作者: MF9593 时间: 2020-3-22 17:31 标题: 修改hots文件
需求:某些网站/软件需要修改hots才能登录,想制作一个批处理修改hots文件,怎么弄?
文件位置:
C:\Windows\System32\drivers\etc
1.能够扫描文件中带“#”的行,判断并删除“#”号
2.能够自定义添加新的内容
3.能够备份该文件
作者: flashercs 时间: 2020-3-22 19:41
本帖最后由 flashercs 于 2020-3-22 21:57 编辑
- @echo off
- net session >nul 2>&1
- if errorlevel 1 (
- mshta vbscript:CreateObject("Shell.Application"^).ShellExecute("%~s0","","","runas",1^)(window.close^)
- exit /b
- )
- set hosts="%windir%\system32\drivers\etc\hosts"
- set hostsbackup="%windir%\system32\drivers\etc\hosts.bak"
- set tmpfile="%temp%\~~"
- icacls %hosts% /reset
- attrib -r %hosts%
- copy /y %hosts% %hostsbackup%
- >%tmpfile% findstr /blv "#" %hosts%
- move /y %tmpfile% %hosts%
- >>%hosts% (
- echo.#新内容
- echo.192.30.253.112 github.com
- echo.192.30.253.119 gist.github.com
- echo.151.101.100.133 assets-cdn.github.com
- )
- pause
- exit /b
复制代码
作者: kaze 时间: 2020-3-22 20:59
回复 2# flashercs
你好,正好用得着,但是有点问题,会把之前加的其他条目去掉,(例如 127.0.0.1 upgrade.xl10.xunlei.com),二次点击时会重复添加例子的 github hosts(未作已经添加判断)
作者: flashercs 时间: 2020-3-22 21:58
回复 3# kaze
已修改
作者: wujunkai 时间: 2020-3-23 08:04
回复 1# MF9593 - @echo off
- @setlocal enabledelayedexpansion
-
- rem 目前支持 add , backup , quit
- rem 格式:
- rem add 域名 [IP地址]
- rem backup
- rem quit
-
- rem Ps : []中的内容表示非必须
- rem 我有空再慢慢打磨 , 添加 del 和 restore
-
- set host="%windir%\system32\drivers\etc\hosts"
- set back="%windir%\system32\drivers\etc\hosts_%date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%.bak"
-
- rem set host="hosts"
- rem set back="hosts_%date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%.bak"
-
- attrib -R %host%
-
- :main
- rem 主循环
- set "command="
- set /P command=
- if "%command%"=="" (
- goto:main
- )
- for /F "tokens=1-26" %%a in ("%command%") do (
- if /I "%%a"=="add" call:add %%b %%c
- if /I "%%a"=="backup" call:backup
- if /I "%%a"=="quit" call:quit
- echo done
- )
- goto:main
-
- rem ----------
-
- :add
- rem 添加IP和域名
- rem 若IP缺省则通过ping获取
- set address=%~1
- if "%~2"=="" (
- call:get_IP %address%
- ) else (
- set ip=%~2
- )
- echo %ip% %address% >>%host%
- goto:eof
-
- :get_IP
- for /F "skip=6" %%i in ('ping %~1') do (
- set IP=%%i
- goto:eof
- )
- goto:eof
-
- rem ----------
-
- :backup
- copy %host% %back%
- goto:eof
-
- rem ----------
-
- :quit
- attrib +R %host%
- exit
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |