一起学BAT脚本(batch script)--01

来源:互联网 发布:mmd千本樱镜头数据 编辑:程序博客网 时间:2024/04/27 14:21

    • 前言
    • 相关网站
    • bat学习自动配置IP地址脚本
      • 脚本
      • 解析
        • 大小写
        • 空格
        • echotitlerem
        • set
        • if
        • exit
        • netsh
    • 其他请见后续博客

前言

持续更新地址:https://www.zybuluo.com/wuzhimang/note/427541

学习了不少语言和脚本,如果让我推荐一个大众意义上最方便的语言,我会推荐batch script,写一个bat,然后几乎可以在任何windows上运行,而重点是不需要自己安装什么解释器!
笔者的博文是直接从干货“脚本”进行讲解的,并不是一个搬过来的参考书,具体命令的用法和相关,直接 help或者COMMAND /?更方便

相关网站

先推荐一些学习BAT的网站,以下均是英文网站,自己在国内目前没有发现比较好的网站或者博文。如果大家发现了欢迎推荐给我!

  1. How To Write A Simple Batch (.bat) File
    • 文章很简单, 很短
    • 介绍BAT命令主要有TITLE ECHO ECHO OFF PAUSE CLS IPCONFIG PING
  2. Batch Script Samples
    • 可算高级进阶
    • 提供了很多脚本示例,比如FTP上传下载脚本等,还包括一些错误的例子,是进一步学习bat的好地方
  3. Batch Script Generator
    • 图形化BAT脚本生成器, 免费下载
    • 很“懒”但很好,很适合非IT人员
  4. Batch Script Tutorial
    • 很好的入门网站,类似runoob.com和W3C网站
    • 自己主要从这正入门的,但原文有一些基本的错误,比如
      1. set str = helloworld 在设定字符串变量时,变量名str=之间是不能有空格的,因为BAT会将后面的空格当作变量名的一部分,即变量名为str(空格),但如果是数值型变量,如set /A var = 123var=之间没有空格都行! <– 笔者操作系统是win 7 专业版
      2. 极少的示例是错误的,这个读者比较容易发现
  5. Windows Batch Scripting
    • 这是wikibooks,权威性不用说了,精简但全面
  6. Guide to Windows Batch Scripting
    • github上一位牛人的博客

bat学习–自动配置IP地址脚本

下面自己写的最早的一个bat脚本,非常的简单,因为自己每次上网都需要设置固定的IP,来回手动输入更换很麻烦

脚本

@echo offtitle 自动设置IP地址echo.echo 1.设置寝室静态IPecho 2.设置实验室静态IPecho 3.设置自动获取IPecho 4.设置XX机房静态IPrem echo 5.手动设置静态IP:: echo 6.手动设置静态IPecho 0.exitecho.set /P i=请输入对应操作编号:set IPADDR=10.100.222.67set NETMASK=255.255.255.0set GATEWAY=10.100.222.254set DNS1=114.114.114.114set DNS2=8.8.8.8if %i% EQU 0 ( exit )echo 设置中…………if %i% EQU 1 (    netsh interface ipv4 set address name="本地连接" static 10.100.222.67 255.255.255.0 10.100.222.254    netsh interface ipv4 set dnsservers "本地连接" static %DNS1%    netsh interface ipv4 add dnsservers "本地连接" %DNS2%)if %i% EQU 2 (    netsh interface ipv4 set address name="本地连接" static 10.10.82.153 255.255.255.0 10.10.82.1    netsh interface ipv4 set dnsservers "本地连接" static %DNS1%    netsh interface ipv4 add dnsservers "本地连接" %DNS2%)if %i% EQU 3 (    netsh interface ipv4 set address name="本地连接" source=dhcp    netsh interface ipv4 set dnsservers "本地连接" source=dhcp)if %i% EQU 4 (    netsh interface ipv4 set address name="本地连接" static 10.113.48.201 255.255.255.0 12.113.48.1    netsh interface ipv4 set dnsservers "本地连接" static 10.113.250.253    netsh interface ipv4 add dnsservers "本地连接" 10.113.250.254)pause

解析

1. 大小写

  • BAT是大小写不敏感的,也就是说echoECHOEcHo都是一样的,对于命令的参数的大小写,变量的大小写,也如此。具体用小写还是大写依自己的习惯。
  • 如下脚本执行后显示的都是10,这就不难理解了,其中%变量%表示对变量的引用,
@echo offset /a like=123set /a LIKE=10echo %like%echo %LIKE%echo %LiKe%EcHo %like%pause

2. 空格

  • 同python不同,BAT对每行命令前的空格也是不敏感的,即有还是没有,或者有多少都不影响命令的执行
  • 如下脚本执行后,执行结果都是100,其中只有第9行执行有问题,因为变量名like前并没有空格
@echo offset /a LIKE=10set /A   like=100    echo %like%      echo %LIKE%  echo %LiKe%        EcHo     %like%echo    %  like%echo               %like%  pause

执行结果如下
image_1an9u3316pen1n711k901m43mhv9.png-27kB

3. echo、title、rem、::

image_1an9v5phi1tqa1hs518ssavc153a1t.png-21.7kB

  • 脚本中第一行是@echo off,其中echo的作用是显示信息, echo off表示将回显关上,即如果没关上,那么在后续命令执行时会显示每条执行命令,命令前加@是告诉在执行本行命令时不显示该命令。详细的请echo /?或者自己尝试就知道彼此间的区别了。
  • title用来设置BAT脚本执行时命令提示框的标题名
  • echo. 中间没有空格,这用来显示空行
  • rem::都是启注释作用,即这一行是用来备注或方便阅读脚本的,并不执行
  • 下面是取消第一行@echo off后脚本执行时的显示
    image_1an9vffdu1suium010ckhqtess2a.png-48.1kB

4. set

image_1an9vld8iff4o118blnop1np89.png-12.9kB

  • set命令,用来设置变量的,/P参数表示将变量i的值设置成用户的一行输入,而i=请输入对应操作编号:中的字符串是要显示的提示信息,用来提醒用户输入,其他参数的用法如/a等可set /?查询
  • set命令中变量名和=之间最好不要有空格,见上面“相关网站4”的说明

5. if

image_1ana01oto1n4l1mdsuf5eidf4vm.png-18.7kB
- if语句用来就行变量的判断,其中EQU表示等于,%i% EQU 1表示i是否等于1,如果等于则执行()内的命令,具体用法if /?有中文的使用说明
- 如果只有一条命令()是可由可无的,如果包含多调执行命令,如上图,则添加()

6. exit

  • 即退出CMD.EXE程序或当前的批处理脚本

7. %%

  • %主要用来进行变量的引用,如脚本中的%i%表示引用上面set定义的变量i的值
  • %1, %2等这类单个%也会存在,这个是用来引用传入给脚本或者函数的的参数,详细的请见后续博客的说明
  • %%i这类引用一般出现在for循环语句中,详细的请见后续博客的说明

8. netsh

  • netsh是一个windows下的一个网络设置工具,功能很多,netsh /?可查询的到
  • 其中netsh interface ipv4可用来设置具体的ipv4地址等信息,如添加dnsservers
  • 若是想要将笔记本设置为一个wifi热点的话,还可以通过命令netsh wlan设置、启动或者关闭

其他请见后续博客

0 0
原创粉丝点击