用批处理修改hosts文件

猫哥 程序代码评论字数 903阅读3分0秒阅读模式

需要为用户增加一条hosts记录,如何用脚本解决这个问题。
显然,最简单的做法是:

  1. echo 192.168.2.2 www.domainname.com >> %SystemRoot%\system32\drivers\etc\hosts

 

也就是将 192.168.2.2 www.domainname.com 添加到hosts文件结尾处。
这无疑带来一个问题,多次运行这个脚本,会在hosts文件中加入许多无用的垃圾。我们需要加入一个判断,检查一下记录是否已经存在。

  1. @echo off
  2. set stHosts=X.X.X.X www.domainname.com
  3. FOR /F "eol=# tokens=1 delims=" %%i in (%SystemRoot%\system32\drivers\etc\hosts) do if "%stHosts%"=="%%i" exit
  4. echo %stHosts%>> %SystemRoot%\system32\drivers\etc\hosts

set命令比较好理解,定义了一个变量,也就是我们要插入的记录,最后不要留空格。
解释一下这条For命令:
FOR /F "eol=# tokens=1 delims=" %%i in (%SystemRoot%\system32\drivers\etc\hosts) do
For /F 命令会读取hosts文件,将其分成一行行的文字,根据我们指定的规则进行拆分处理,“eol=#” 忽略过#开头的行,“tokens=1”传送每行第一个符号,“delims=”将分隔符集设为空(默认为空格和跳格键),其实是将整行记录返回,并赋值给%%i,然后执行do 后面的命令。

for命令功能十分强大,可以轻易完成许多看似不可能用批处理完成的任务。在命令行下键入 for /? 可以得到完整的帮助说明还有例子。

由此我们可以得到hosts文件中的每条记录,接下来用if来判别一下,看看这条记录是否为我们要添加的记录。如果是的话表示记录已经添加,可以直接退出脚本,什么也不做。 if语句中 == 两边的变量都加了""是为了防止变量为空的情况。

最后一行添加记录到hosts结尾。

继续阅读
猫哥
  • 本文由 发表于 2021-11-12 10:38:16
  • 转载请务必保留本文链接:https://www.588693.com/1366.html
安卓通过shell命令启动APP怎么操作 程序代码

安卓通过shell命令启动APP怎么操作

要启动Android应用程序,可以使用adb shell命令,语法如下:adb shell am start -n /。其中,是应用程序的包名,是应用程序的入口Activity名称。 相关问题 and...
Android build.prop简介 程序代码

Android build.prop简介

build.prop位于手机的/system/build.prop中 build.prop记录一些系统设置,是一个属性文件,相当于Windows系统的注册表。 build.prop生成: Make系统...
php程序列表程序 程序代码

php程序列表程序

记录备份一下 H5ai,就是一个文件目录列表程序,可以搭建在服务器上,可以作为下载站点,也可以当成私有云盘。h5ai是一款功能强大 php 文件目录列表程序,不需要数据库,支持在线预览文本、图片、音频...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定