批处理绑定ip脚本解释

前言


因为大家最近都在和这个文件打交道,不得不说其实突然弄这个的时候还是觉得蛮苦恼的,而我作为其中一员,很多事情不能解释,也不知道原理,就只知道去用,其实觉得还是蛮难受的,于是就抽出一些时间来研究了一下,虽然说没有研究的很透彻,但是大部分还是可以解释的

源文件

rem 批处理隐藏运行效果
@echo OFF
if "%1"=="h" goto begin 
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit 
:begin

if exist b.bat del b.bat
if exist aaa.txt del aaa.txt

rem 查询网卡信息,保存在aaa.txt中
netsh i i show in>aaa.txt

rem 弹出提示框,告诉大家已经绑定成功
@echo msgbox "good jod~ IP-Mac已绑定成功。">msg.vbs 
@msg.vbs
@del msg.vbs

rem 在aaa.txt第4行开始循环查找第1列的内容,存放到变量I中。
for /f "skip=3 tokens=1" %%I in (aaa.txt) do ( 

rem 将echo后面的内容(绑定网关),写入b.bat中。
echo netsh -c "i i" add neighbors %%I "192.168.24.254" "58-6a-b1-f4-a1-f0">b.bat

rem 在aaa.txt第4行开始循环查找第1,2列的内容(即ip和mac),存放到变量a和b中。
for /f "skip=2 tokens=1-2 delims=   " %%a in (ip-macV7.0.txt) do (

rem 将echo后面的内容(绑定所有ip&mac),写入b.bat中。
echo netsh -c "i i" add neighbors %%I "%%a" "%%b">>b.bat
)
rem 执行 绑定命令
b.bat
)


if exist b.bat del b.bat
if exist aaa.txt del aaa.txt

命令解释

rem


就相当于VB程序中的 ’ 就是注释的意思,在程序中不起作用

隐藏批处理运行窗口


  下面这段代码就是用批处理命令实现隐藏批处理运行窗口,缺点:会看到一个窗口一闪而过,优点:简单,直接添加就可以
  另外隐藏批处理运行窗口的方法大家可以自行百度,这里比较多,就不写了

@echo OFF
if "%1"=="h" goto begin 
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit 
:begin


  *该批处理运行之后,命令窗口就消失了,它会把自己隐藏成进程svchost.ext在后台运行

解释一下svchost.ext是一个属于微软Windows操作系统的系统程序,微软官方的解释是 Svchost.txt是从动态链接库(DLL)中运行的服务的通用主机进程名称,这个程序对系统的正常运行是非常重要,而且是不能被结束的,我认为这里最重要的是不能被结束,(大家感兴趣可以百度一下,这里不做过多解释)

@、echo、参数


  *@ 字符放在命令前将关闭该命令回显,无论此时echo是否为打开状态,也就是隐藏了@后面的命令效果
  *echo 显示消息,或将命令回显打开或关闭的
  *%1 - %9是参数的意思

if exist b.bat del b.bat

if exist b.bat del b.bat
if exist aaa.txt del aaa.txt


  如果有b.bat这个文件就删除b.bat
  如果有aaa.txt 这个文件就删除aaa.txt
  Del 删除至少一个文件

netsh i i show in>aaa.txt

netsh i i show in>aaa.txt

这里是用来查询在以上显示内容中找到你用来上网连接的Idx号码
这里写图片描述


  Idx是本地活动网卡序号,我这里 11 是idx号
  在网络介质的传输单位中,MTU即一个数据包的最大字节数是有限制的.MTU,最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据报大小(以字节为单位)。(大家可以自行百度)

弹出提示框

rem 弹出提示框,告诉大家已经绑定成功
@echo msgbox "good jod~ IP-Mac已绑定成功。">msg.vbs 
@msg.vbs
@del msg.vbs


  这个是弹出提示框的意思

VBS是基于Visual Basic的脚本语言。VBS的全称是:Microsoft Visual Basic Script Editon。
VBS是用txt书写代码,然后直接保存为vbs格式就可以的。感觉还是蛮好玩的,大家感兴趣可以百度查一下,有很多恶搞的代码是用vbs实现的

“>”表示把原本输出到屏幕上的数据写入其他设备、文件,
也就是现在把 “msgbox”你好””写入了一个名字为msg 的vbs文件中
然后运行msg.vbs ,细心的大家可以发现,在你没有点击那个确定的时候文件夹中会出现这样一个文件这里写图片描述

这个文件就是运行的vbs文件,当我们点击确定之后,这个文件就没有了,因为下一步的代码把它删掉了

del msg.vbs


但是我认为可以不用vbs文件,可以直接用批处理的方法来实现,效果是一样的,如图

msg %username% "Hello!"

这里写图片描述

FOR参数


for:为一组文件中的每个文件运行一个指定的命令

 因为for的参数有很多,这里就不一一解释,只解释一下文中用到的 /F 参数

格式:

FOR /F [“options” ] %%i IN (file) DO command
FOR /F [“options” ] %%i IN (“string” ) DO command
FOR /F [“options” ] %%i IN (‘command’) DO command


这个可能是最常用的,也是最强的命令,主要用来处理文件和一些命令的输出结果。

delims

FOR /F "Delims=符号集"  %%I IN (Command1) DO Command2


 一句话总结:忽略分隔符,切分字符串。
第一、指定原文中的标点符号作为分隔符。使得文本被划分为许多小部分,方便使用批处理命令读取和编辑。
第二、读取第一个分隔符之前的内容。忽略第一个分隔符和分隔符后面的内容,如需读取和编辑,需要使用tokens等命令。

tokens

 一句话总结:提取列。

FOR /F"tokens=x,y,m-n"  %%I  IN (Command1) DO Command2


 提取指定的列。
注意列与句的联系与区别。
文本内容由许多文字字符串组成,它们被标点符号分隔,两个标点符号之间的语句我们称为“句子”。
当标点符号被“tokens=”指定为分隔符之后,文字将被分成多个部分。对应的每行的每个部分我们称之为“列”。
一列可能是一个句子,也可能包含多个句子,视delims定义的标点符号而定。

netsh


  netsh(Network Shell) 是一个windows系统本身提供的功能强大的网络配置命令行工具。 导出配置脚本:netsh -c interface ip dump > c:\interface.txt 导入配置脚本:netsh -f c:\interface.txt。

dump :显示一个配置脚本
add :在项目列表上添加一个配置项目。

netsh -c int ip dump > c:\ip.txt

该命令是显示当前”本地连接” 的接口IP 配置,并保存在ip.txt文本文件中
删除了原有的ip和mac之后,我们运行批处理,这样电脑上就有了新的ip地址
再运行下面的代码用来导入ip
netsh -f c:\ip.txt

该命令是导入新的ip配置

运行之后应该是这个样子的,如果不是也没关系,只要把里面原有的ip清空就可以

这里写图片描述

总结


  我总结了一些基础知识,如果大家耐心看一下的话,还是比较容易懂的,不过如果想看看的话,可以再百度一下,毕竟我写上去的是我看了百度之后的总结,还是百度比较厉害,其他的大家可以把批处理里面的东西都打开看一看,再对着注释和代码仔细理解一下,应该还是可以理解的。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 98
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 98
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值