首页 > 编程语言 >使用脚本修改hosts文件(bat+python)

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

时间:2022-09-19 10:45:32浏览次数:79  
标签:脚本 bat python ECHO hosts% hosts

使用脚本修改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

相关文章

  • 【股票爬虫】我用100行Python代码,爬了雪球网5000只股票,还发现一个网站bug!
    一、爬取目标您好,我是@马哥python说,今天继续分享爬虫案例。爬取网站:雪球网的沪深股市行情数据具体菜单:雪球网>行情中心>沪深股市>沪深一览爬取字段,含:股票代码,......
  • python自动更新pom文件
    前言项目越来越多,版本管理越来越麻烦,在项目上我使用mavenversion来进行版本管理。主要还是在分布式项目中模块众多的场景中使用,毕竟各个模块对外的版本需要保持统一......
  • 崩溃!学了三年Python,这几道面试题还是答不好
    每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试,领取资料可加:magetest码同学抖音号:小码哥聊软件测试Python语......
  • python网络爬虫常用解析器
    BeautifulSoupBeautifulSoup是一个HTML/XML的解析器,主要用于解析和提取HTML/XML数据。它基于HTMLDOM的,会载入整个文档,解析整个DOM树,因此时间和内存开销都会大很多,......
  • springboot集成mybatis获取插入数据的主键
    问题:我们想在插入一条数据后同时能够返回这条数据在表中的id,Mybatis提供了@SelectKey注解。student为数据表,主键自增SelectKey的四个属性:selectKey会将SELECTLAS......
  • mybatis注解之@Mapper和@MapperScan的使用
    +目录mybatis注解之@Mapper和@MapperScan方式一:使用@Mapper注解方式二:使用@MapperScan注解@MapperScan和@Mapper区别及理解作用扫描一个包扫描多个包myb......
  • pythonbiji
     Python基础入门笔记(二)_Jaybo_的博客-CSDN博客Python基础入门笔记(一)-腾讯云开发者社区-腾讯云(tencent.com)......
  • SpringBoot集成Mybatis 实现InsertOrUpdate功能
    需求场景在项目开发过程中,难免会遇到这样的场景:对一张表,当数据不存在的时候,进行insert插入操作;数据存在的时候,进行update更新操作;下面就来使用Mybatis的InsertOrUpdate功......
  • java框架——MyBatis
    MyBatis什么是MyBatis?MyBaits是一款优秀的持久层框架,用于简化JDBC开发MyBaits本事Apached的一个开源项目iBatis,2010年这个项目由apachesoftwarefoundation迁移到......
  • SSM框架之Mybatis基本概念及使用方法
    SSMSpingMVC+Spring+Mybatis SpringMVC充当Servlet可以理解为SpringMVC是Spring的WEB支持Mybatis充当Dao层Sping充当一个润滑油的角色 MybatisPlus国内......