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%文件已存在,无需创建!
)

最新文章

  1. 垂直居中display:table;
  2. Jquery--input
  3. SQL中EXISTS的用法
  4. HTML5--div、span超出部分省略号显示
  5. Maven项目java.lang.NoClassDefFoundError: Lorg/apache/log4j/Logger报错
  6. swift tableview的分割线不能到头
  7. js反射机制
  8. 【OpenCV】opencv3.0中的SVM训练 mnist 手写字体识别
  9. ReactJS入门学习二
  10. html 标签内部元素上下居中
  11. [转] Web前端优化之 CSS篇
  12. printf在终端输出时改变颜色
  13. BZOJ 1059 矩阵游戏
  14. SplitButton( 分割按钮)
  15. 执行指定iframe页面的脚本
  16. Django 提交 form 表单
  17. 带着萌新看springboot源码02
  18. charls 抓包
  19. C++基础知识小记
  20. Android Studio查看签名文件sha1和MD5的方法

热门文章

  1. FYF的煎饼果子
  2. ASP.NET Core搭建多层网站架构【8.3-编写角色业务的增删改】
  3. 「WC2013」糖果公园
  4. 工具 - 正则Cheat sheet
  5. 【代码审计】VAuditDemo 文件包含漏洞
  6. java怎么调用子类中父类被覆盖的方法
  7. git 操作详情
  8. 【原】centos安装django
  9. 二分(求l-r中的平方数)
  10. iOS 10.3 以上系统实现应用内评分及开发者回复评论