使用脚本修改hosts文件(bat+python)

一、使用bat脚本方式

  使用bat修改hosts文件,首先判断默认路径是否存在,如不存在,手工输入目标文件地址(一般用不着):

SET hosts=C:\Windows\System32\drivers\etc\hosts

if exist %hosts% goto hosts
goto nofile

:hosts
@xcopy %hosts% %hosts%_bak\ /d /c /i /y
@ECHO hosts文件已备份,备份目录为%hosts%_bak
@ECHO 1.1.1.1 a.b.c >>%hosts%
@ECHO 2.2.2.2 d.e.f >>%hosts%
ECHO hosts文件已修改,请按任意键退出
@pause > nul
@exit

:nofile
set /p a= 请输入hosts地址(例如:C:\Windows\System32\drivers\etc):
@xcopy %a%\hosts %a%\hosts_bak\ /d /c /i /y
@ECHO HOSTS文件已备份,hosts文件已备份,备份目录为%a%\hosts_bak
@ECHO 1.1.1.1 a.b.c >>%a%\hosts
@ECHO 2.2.2.2 d.e.f >>%a%\hosts
ECHO hosts文件已修改,请按任意键退出
@pause > nul
@exit

为了保证脚本能正常执行,在脚本开头加入管理人权限配置:
(参考脚本之家:https://www.jb51.net/article/193692.htm)

PUSHD %~DP0 & cd /d "%~dp0"
%1 %2
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :runas","","runas",1)(window.close)&goto :eof

:runas

执行效果:
在这里插入图片描述

二、使用python

  上述bat脚本使用还是存在缺陷,例如,当需要新增一个IP地址的时候,直接新增行,执行脚本,会导致原来数据重复的问题。(当然bat脚本也实现遍历数据再执行插入操作,但是简单思考之后,使用python更加方便)。
  使用python编写的思路很简单,将所有需要新增的内容写在配置文件hosts_config中,遍历配置文件的数据,执行插入操作,
(一)配置信息如下:
在这里插入图片描述
(二)代码如下:

import os

hosts = r'C:\Windows\System32\drivers\etc\hosts'

with open('hosts_config') as readhost:
    lines = readhost.readlines()

with open(hosts) as f:
    myhost = f.readlines()

for i in lines:
    if i not in myhost:
        with open(hosts,'a') as tmp:
            tmp.write(i)
            print('add  ' + i)
    else:
        print('already exist  ' + i)

os.system('pause')

  因为脚本是要给公司所有电脑执行的,所以将其打包即可,我使用的是pyinstaller打包的(注意添加管理员模式运行):

pyinstaller --uac-admin -F xxx.py
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐