hosts文件替换

工作需要,要修改很多计算机的hosts文件,采用bat批量完成

解决的问题:

1.pc工作在非管理员权限,右键管理员权限太麻烦,因此采用执行中申请管理员权限的方式

2.hosts和替换脚本放在某台pc机上,其他pc以共享文件夹的方式访问,但cmd命令行无法将UNC路径作为当前目录,这样就不方便识别和脚本同目录的hosts文件.

3.执行备份替换前,要先新版hosts文件是否和Batch文件在同一目录,防止错误操作.

4.不管文件是否完成更新,都需要给出提示,并且自动关闭终端.

对于问题1,参考 https://blog.csdn.net/lijialong1313/article/details/54171535

对于问题2,参考 https://www.jianshu.com/p/2d3190f592c5

对于问题3,参考 https://blog.csdn.net/qq_39720249/article/details/85067931

对于问题4,采用如下方法

替换成功 黑色背景绿色文字,窗口7秒后自动关闭

不成功 黑色背景红色文字,窗口不会自动关闭

bat文件申请管理员权限的方法百度上有好几种,我随便选择了一种

附上我使用的代码

@echo off
title hosts文件替换
REM ________________________________________________________________
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
echo 请求管理员权限...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B :gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd %~dp0
echo %cd% REM ________________________________________________________________
echo.
echo.
SET SourceFile=%cd%\hosts
SET GenFile=C:\Windows\System32\drivers\etc\hosts
if exist %SourceFile% (
echo.
echo.
color 0A
echo hosts文件存在-备份-更新
move %GenFile% %GenFile%.old
copy %SourceFile% %GenFile%
popd
echo 更新完成
>nul TIMEOUT /T 7
) else (
color 0C
echo.
echo.
echo hosts文件不存在
pause>nul
)
echo.
echo.

UNC路径的问题,关键部分代码如下

pushd %~dp0 映射为网络驱动器

popd 释放映射

cd /d %~dp0
echo %cd% pushd %~dp0
echo %cd%
popd
pause

CSDN博主「故三殇」的文档我参考了部分,感觉以后一定还会用到,因此转载了过来

CSDN博主「故三殇」的原创文章

原文链接:https://blog.csdn.net/qq_39720249/article/details/85067931

通过复制方法创建文件或目录

@echo off
echo result.jtl文件判断
SET SourceFile=G:\Jmeter\apache-jmeter-5.0\report\backup\result.jtl
SET GenFile=G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl if not exist %GenFile% (
rem 复制文件result.jtl
copy %SourceFile% %GenFile%
echo %GenFile% 文件不存在,已创建该文件!
) else (
echo %GenFile% 文件已存在,无需创建!
)

复制目录(包括空目录):

@echo off
echo OutReport目录判断
SET SourceFolder=G:\Jmeter\apache-jmeter-5.0\report\backup\OutReport
SET GenFolder=G:\Jmeter\apache-jmeter-5.0\report\OutReport\ if not exist %GenFolder% (
rem 复制目录G:\Jmeter\apache-jmeter-5.0\report\backup\OutReport到G:\Jmeter\apache-jmeter-5.0\report路径下
Xcopy %SourceFolder% %GenFolder% /s/e/h/i
echo %GenFolder%目录不存在,已创建该目录!
) else (
rem 目录G:\Jmeter\apache-jmeter-5.0\report\OutReport已存在,无需创建
echo %GenFolder%目录已存在,无需创建!
)

复制文件和目录(包括空)

@echo off
echo result.jtl文件判断
SET SourceFile=G:\Jmeter\apache-jmeter-5.0\report\backup\result.jtl
SET GenFile=G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl if not exist %GenFile% (
rem 复制文件result.jtl
copy %SourceFile% %GenFile%
echo %GenFile% 文件不存在,已创建该文件!
) else (
echo %GenFile% 文件已存在,无需创建!
) echo OutReport目录判断
SET SourceFolder=G:\Jmeter\apache-jmeter-5.0\report\backup\OutReport
SET GenFolder=G:\Jmeter\apache-jmeter-5.0\report\OutReport\ if not exist %GenFolder% (
rem 复制目录G:\Jmeter\apache-jmeter-5.0\report\backup\OutReport到G:\Jmeter\apache-jmeter-5.0\report路径下
Xcopy %SourceFolder% %GenFolder% /s/e/h/i
echo %GenFolder%目录不存在,已创建该目录!
) else (
rem 目录G:\Jmeter\apache-jmeter-5.0\report\OutReport已存在,无需创建
echo %GenFolder%目录已存在,无需创建!
)

通过新建方法创建文件和目录

新建文件

@echo off
echo result.jtl文件判断
SET GenFile=G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl if not exist %GenFile% (
rem 创建空文件G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl
rem 如果需要添加内容,少量的,可以用内容把“nul”替换掉,比如:type 这是文件内容>%GenFile%;多的话则使用复制方法
type nul>%GenFile%
echo %GenFile%文件不存在,已创建该文件!
) else (
rem 文件G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl已存在,无需创建
echo %GenFile%文件已存在,无需创建!
)

新建空目录

@echo off
echo OutReport目录判断
SET GenFolder=G:\Jmeter\apache-jmeter-5.0\report\OutReport if not exist %GenFolder% (
rem 创建空目录G:\Jmeter\apache-jmeter-5.0\report\OutReport
rem 创建非空目录,使用复制方法
echo %GenFolder%目录不存在,已创建该目录!
md %GenFolder%
) else (
rem 目录G:\Jmeter\apache-jmeter-5.0\report\OutReport已存在,无需创建
echo 目录%GenFolder%目录已存在,无需创建!
)

目录下是否存在.jtl后缀名文件判断

@echo off
echo .jtl后缀名文件判断
SET GenFile="G:\Jmeter\apache-jmeter-5.0\report\jtl"\***.jtl if not exist %GenFile% (
rem 创建空文件G:\Jmeter\apache-jmeter-5.0\report\jtl\newfile.jtl
rem 如果需要添加内容,少量的,可以用内容把“nul”替换掉,比如:type 这是文件内容>文件路径\新文件名;多的话则使用复制方法
type nul>G:\Jmeter\apache-jmeter-5.0\report\jtl\newfile.jtl
echo %GenFile%文件不存在,已创建该文件!
) else (
rem 文件"G:\Jmeter\apache-jmeter-5.0\report\jtl"\***.jtl已存在,无需创建
echo %GenFile%文件已存在,无需创建!
)

新建文件和目录

@echo off
echo result.jtl文件判断
SET GenFile=G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl if not exist %GenFile% (
rem 创建空文件G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl
rem 如果需要添加内容,少量的,可以用内容把“nul”替换掉,比如:type 这是文件内容>%GenFile%;多的话则使用复制方法
type nul>%GenFile%
echo %GenFile%文件不存在,已创建该文件!
) else (
rem 文件G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl已存在,无需创建
echo %GenFile%文件已存在,无需创建!
) echo OutReport目录判断
SET GenFolder=G:\Jmeter\apache-jmeter-5.0\report\OutReport if not exist %GenFolder% (
rem 创建空目录G:\Jmeter\apache-jmeter-5.0\report\OutReport
rem 创建非空目录,使用复制方法
echo %GenFolder%目录不存在,已创建该目录!
md %GenFolder%
) else (
rem 目录G:\Jmeter\apache-jmeter-5.0\report\OutReport已存在,无需创建
echo 目录%GenFolder%目录已存在,无需创建!
) echo 所有.jtl后缀名文件判断
SET GenFile="G:\Jmeter\apache-jmeter-5.0\report\jtl"\***.jtl if not exist %GenFile% (
rem 创建空文件G:\Jmeter\apache-jmeter-5.0\report\jtl\newfile.jtl
rem 如果需要添加内容,少量的,可以用内容把“nul”替换掉,比如:type 这是文件内容>文件路径\新文件名;多的话则使用复制方法
type nul>G:\Jmeter\apache-jmeter-5.0\report\jtl\newfile.jtl
echo %GenFile%文件不存在,已创建该文件!
) else (
rem 文件"G:\Jmeter\apache-jmeter-5.0\report\jtl"\***.jtl已存在,无需创建
echo %GenFile%文件已存在,无需创建!
)

Batch批量替换hosts的更多相关文章

  1. spring batch批量处理框架

    spring batch精选,一文吃透spring batch批量处理框架 前言碎语 批处理是企业级业务系统不可或缺的一部分,spring batch是一个轻量级的综合性批处理框架,可用于开发企业信息 ...

  2. 在Vi里面实现字符串的批量替换

    在Vi里面实现字符串的批量替换. a. 文件内全部替换: %s#abc#def#g(用def替换文件中所有的abc) 例如把一个文本文件里面的"linuxidc.com"全部替换成 ...

  3. 帝国cms内容批量替换

    方法一:栏目-其他相关-批量替换字段值 方法二:通过sql替换           UPDATE phome_ecms_news SET body=REPLACE(body,'原来','现在')

  4. 在Visual Studio中使用正则表达式匹配换行和批量替换

    系统环境:Windows 8.1 Enterprise Update 2 x64 开发环境:Mircosoft Visual Studio Ultimate 2013 Update 2 RC 问题:如 ...

  5. linux下批量替换文件内容

    1.网络上现成的资料 格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` linux sed 批量替换多个文件中的字符串: (此命令很强大) ...

  6. dedecms文章标题是在哪个数据库表?要批量替换关键词

    一位小MM刚接触dedecms没多久还不熟悉后台的操作,她说改dedecms文章中的品牌名改到手酸,问ytkah是否有批量替换关键词的方法,教了她dedecms后台批量替换文章中的关键词方法,她高兴坏 ...

  7. sql数据库批量替换dedecms内容关键字

    之前写了一篇dedecms后台批量替换文章中的关键词,这边我们介绍一下用sql数据库批量替换dedecms内容关键字,当然要求你对数据库比较熟悉,修改前请自行做好备份. 1.更改文章中的内容 upda ...

  8. dedecms后台批量替换文章中的关键词

    DEDECMS怎么样能快捷或者批量修改网站所有文章的超链接和锚文本,超链和所有关键词锚文本的链接需要修改? dedecms后台批量替换文章中的关键词

  9. Powershell 批量替换文件

    Powershell 批量替换文件 ##作者:Xiongpq ##时间:2015-06-10 18:50 ##版本:2.0 ##源文件目录 ##源文件目录的所有文件都会覆盖目标目录的同名文件,源文件目 ...

随机推荐

  1. touchstart和click 自动区分

    var clickEvent = (function() { if ('ontouchstart' in document.documentElement === true) return 'touc ...

  2. 将jar包安装到本地Maven仓库

    1.安装jar包到本地仓库 mvn install:install-file -Dfile=F:\jiefu\lib\alipay-sdk-java20170324180803.jar -Dgroup ...

  3. JavaScript的变量提升机制

    变量提升 JavaScript的变量提升有两种,用var声明的变量以及用function声明的变量. 用var声明的变量 我们先来看下面这段代码,a的值是多少 代码1 console.log(a); ...

  4. CSS - px、em、%

    px(像素).em.% 百分比 1. em 1.1 本元素给定字体的 font-size 值,如果元素的 font-size 为 14px ,那么 1em = 14px:如果 font-size 为 ...

  5. 笔记本分享热点wifi给手机上网

    2013年11月18日夜,刚在东莞安顿下来,明天开始上班. 闲来无事,因为无线路由器被牛哥“抢”走了,手机不能连接wifi了,考虑到每月的流量有限,于是考虑让笔记本分享热点给手机上网.因为之前也试过, ...

  6. 《Web安全攻防 渗透测试实战指南 》 学习笔记 (五)

    Web安全攻防 渗透测试实战指南   学习笔记 (五)   第四章 Web安全原理解析  (一) (一)SQL注入的原理 1.web应用程序对用户输入数据的合法性没有判断. 2.参数用户可控:前端传给 ...

  7. NAT-T和PAT(IPSec)

    ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥NAT-T技术介绍¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥ 为什么TCP和UDP不能穿越:TCP和UDP有一个IP头的尾部校验(校验头部和负载 ...

  8. Codeforces Round #611 (Div. 3) D

    There are nn Christmas trees on an infinite number line. The ii -th tree grows at the position xixi ...

  9. ANSYS 非线性材料模型简介1 ---常用弹塑性模型

    目录 1. 材料非线性 2. 三个准则 2.1 屈服准则 2.2 流动准则 2.3 强化准则 3. 常用弹塑性模型 3.1 双线性等向强化 3.2 多线性等向强化 3.3 非线性等向强化 3.4 双线 ...

  10. 后端——框架——持久层框架——Mybatis——补充——pageHelper(分页)插件

    Pagehelper插件的知识点大致可以分为三个部分 搭建环境,引入jar包,配置. 使用方式,只需要记住一种即可.类似于在写SQL语句中,可以left join,也可以right join,它们实现 ...