使用脚本修改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
标签:脚本,bat,python,ECHO,hosts%,hosts
From: https://www.cnblogs.com/likaifei/p/16706882.html