[关闭]
@wuzhimang 2016-07-10T09:17:34.000000Z 字数 3141 阅读 9397

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

BAT batch DOS


前言

学习了不少语言和脚本,如果让我推荐一个大众意义上最方便的语言,我会推荐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.comW3C网站
    • 自己主要从这正入门的,但原文有一些基本的错误,比如
      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,来回手动输入更换很麻烦

脚本

  1. @echo off
  2. title 自动设置IP地址
  3. echo.
  4. echo 1.设置寝室静态IP
  5. echo 2.设置实验室静态IP
  6. echo 3.设置自动获取IP
  7. echo 4.设置XX机房静态IP
  8. rem echo 5.手动设置静态IP
  9. :: echo 6.手动设置静态IP
  10. echo 0.exit
  11. echo.
  12. set /P i=请输入对应操作编号:
  13. set IPADDR=10.100.222.67
  14. set NETMASK=255.255.255.0
  15. set GATEWAY=10.100.222.254
  16. set DNS1=114.114.114.114
  17. set DNS2=8.8.8.8
  18. if %i% EQU 0 ( exit )
  19. echo 设置中…………
  20. if %i% EQU 1 (
  21. netsh interface ipv4 set address name="本地连接" static 10.100.222.67 255.255.255.0 10.100.222.254
  22. netsh interface ipv4 set dnsservers "本地连接" static %DNS1%
  23. netsh interface ipv4 add dnsservers "本地连接" %DNS2%
  24. )
  25. if %i% EQU 2 (
  26. netsh interface ipv4 set address name="本地连接" static 10.10.82.153 255.255.255.0 10.10.82.1
  27. netsh interface ipv4 set dnsservers "本地连接" static %DNS1%
  28. netsh interface ipv4 add dnsservers "本地连接" %DNS2%
  29. )
  30. if %i% EQU 3 (
  31. netsh interface ipv4 set address name="本地连接" source=dhcp
  32. netsh interface ipv4 set dnsservers "本地连接" source=dhcp
  33. )
  34. if %i% EQU 4 (
  35. netsh interface ipv4 set address name="本地连接" static 10.113.48.201 255.255.255.0 12.113.48.1
  36. netsh interface ipv4 set dnsservers "本地连接" static 10.113.250.253
  37. netsh interface ipv4 add dnsservers "本地连接" 10.113.250.254
  38. )
  39. pause

解析

1. 大小写

  1. @echo off
  2. set /a like=123
  3. set /a LIKE=10
  4. echo %like%
  5. echo %LIKE%
  6. echo %LiKe%
  7. EcHo %like%
  8. pause

2. 空格

  1. @echo off
  2. set /a LIKE=10
  3. set /A like=100
  4. echo %like%
  5. echo %LIKE%
  6. echo %LiKe%
  7. EcHo %like%
  8. echo % like%
  9. echo %like%
  10. pause

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

3. echo、title、rem、::

image_1an9v5phi1tqa1hs518ssavc153a1t.png-21.7kB

4. set

image_1an9vld8iff4o118blnop1np89.png-12.9kB

5. if

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

6. exit

7. %%

8. netsh

其他请见后续博客

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注