bat脚本是什么?

首先讲讲什么是命令行,在windows操作系统中,点击左下角的win图标,直接输入cmd搜索,左键点击进入命令行模式(或按键盘上的win键+r直接调出来命令行窗口)。

在windows下命令行中,我们可以执行各种命令,通常这些命令被称为dos命令,也是各个版本windows都会自带的命令,所以无论在什么条件下,只要有windows系统,就可以使用dos命令。

bat脚本就是把一条条单独的dos命令组合在一起的多条dos命令集合的文件,后缀是.bat。

前期概要

本文是对第一篇文章补充的详细解释,包括命令详解、bat脚本的格式说明。(在学习的过程中,可以在自己电脑的命令行中直接进行测试验证)

除之前教程中的echo, set, rem, pause外,主要涉及到的dos命令或功能有:

for, wmic, 截取字符串, 延迟执行命令,比较操作,重定向

跳转至第一篇文章 点击这里

源代码如下(有删减)

  1. @echo off
  2. rem 采集内存总容量
  3. for /f "skip=1" %%i in ('wmic os get TotalVisibleMemorySize') do (
  4. if %%i geq 0 set totalMem=%%i
  5. )
  6. set /a tmp=%totalMem%/1024
  7. set totalMem=%tmp:~0,-3%.%tmp:~-3%G
  8. echo 总内存容量:%totalMem%
  9. echo -----------------------------------------
  10. rem 设置2秒的延迟
  11. ping 127.0.0.1 -n 2 > null
  12. rem 采集磁盘信息
  13. echo 磁盘信息(可用/总量)
  14. wmic LOGICALDISK get DeviceID,FreeSpace,Size > tmp.txt
  15. for /f "skip=1 tokens=1,2,3*" %%i in ('type tmp.txt') do (
  16. set totalDisk=%%k
  17. set freeDisk=%%j
  18. set /a tmp1=!freeDisk:~0,-5!/1074
  19. set /a tmp2=!totalDisk:~0,-5!/1074
  20. set diskStr=%%i!tmp1:~0,-1!.!tmp1:~-1!G/!tmp2:~0,-1!.!tmp2:~-1!G
  21. echo !diskStr!
  22. )
  23. del tmp.txt

命令详解

  • for

功能概述:在命令行中输出自定义字符串。(可以理解为dos命令的循环操作,但是有一些区别)

参数说明:

FOR /D %variable IN (set) DO command [command-parameters]

如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。

FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

检查以 [drive:]path 为根的目录树,指向每个目录中的FOR 语句。如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。

FOR /L %variable IN (start,step,end) DO command [command-parameters]

该集表示以增量形式从开始到结束的一个数字序列。

因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生序列 (5 4 3 2 1)。

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]

FOR /F ["options"] %variable IN ("string") DO command [command-parameters]

FOR /F ["options"] %variable IN ('command') DO command [command-parameters

示例:

  1. for /f "skip=1 tokens=1,2,3*" %%i in ('type tmp.txt') do @echo %%i,%%j,%%k

该语句将会将tmp.txt文件中的内容的前三个字段打印到命令行中,分隔符未指定,则是默认的空格等空白字符

  • wmic

功能概述:wmic可以对window nt系统的WMI管理组件进行管理,功能包括但不限于计算机系统信息,内存信息,磁盘信息,硬件信息等。

参数及说明:

第一种方式:进入命令行,输入wmic,即可进入wmic的命令行,输入/?可查看所有的组件在WMI中的别名。如process(进程信息),os(操作系统信息),computersystem(计算机系统信息)等。。。

第二种方式:直接在cmd命令行输入wmic+各种组件别名+执行的操作,比如wmic os get list brief

示例:

  1. wmic os list brief

输出结果

  1. C:\Users\qjx>wmic os list brief
  2. BuildNumber Organization RegisteredUser SerialNumber SystemDirectory Version
  3. 17134 00329-00000-00003-AA288 C:\WINDOWS\system32 10.0.17134

总结:

wmic在windows操作系统中的应用很多,如果利用好这个工具,可以用这个简单的方式实现许多复杂的获取计算机信息的功能。

  • 截取字符串

功能概述:

Windows操作系统级别,实现将字符串分割。

参数说明:

如果定义了一个变量,那么正常的调用该变量的方式是在变量名两边加%符号调用,截取字符串是在调用的同时做了一些特殊的操作。

示例:

  1. @echo off
  2. set tmp=123456
  3. echo %tmp%
  4. echo %tmp:~0,3%
  5. echo %tmp:~0,-2%
  6. echo %tmp:~-1%

输出

  1. G:\Own\WeChat\course2>tmp2.bat
  2. 123456
  3. 123
  4. 1234
  5. 6
  • 延迟执行

功能概述:

延迟执行命令,比如3秒后执行某条命令,可以用ping 127.0.0.1 -n 3 > null实现

示例

  1. @echo off
  2. echo 11111
  3. ping 127.0.0.1 -n 3 > null
  4. echo 22222

结果:

  1. G:\Own\WeChat\course2>tmp2.bat
  2. 11111
  3. 22222
  • 比较操作

功能概述:

比较运算符(精度小于32位,若大于32为则无法比较):

EQU - 等于

NEQ - 不等于

LSS - 小于

LEQ - 小于或等于

GTR - 大于

GEQ - 大于或等于

  1. @echo off
  2. set num1=11
  3. set num2=22
  4. if %num1% equ %num2% echo "num1=num2"
  5. if %num1% gtr %num2% echo "num1>num2"
  6. if %num1% lss %num2% echo "num1<num2"

结果:

  1. G:\Own\WeChat\course2>tmp2.bat
  2. "num1<num2"
  • 重定向

功能概述:

重定向的作用是将命令行的输出结果输出到文件。

  1. wmic LOGICALDISK get DeviceID,FreeSpace,Size > tmp.txt

总结:

如果程序产生的数据不需要持久化存储,但又需要作为接口传递给下一个程序,通常都会采用中间文件的处理方式。

以上就是对6个命令或功能的讲解了,用好了这些搭配起来上次教程的4个基础命令即可完成各种windows脚本的编写。

如有错误请指出

脚本其实很简单-windows配置核查程序(2)的更多相关文章

  1. 脚本其实很简单-windows配置核查程序(1)

    先上成品图 需求描述 我们电脑上都安装各种过监控软件,比如360.鲁大师等等...其中有一个功能就是性能监控,在安全行业里面通常叫做"配置核查",目的就是将主机的各种性能指标展示, ...

  2. Linux~其实shell脚本也很简单

    用了两个的centos之后,也想看看它的脚本,我们知道shell这个东西就像windows里的批处理,它可以将一些语句进行组合,然后统一去执行,感觉挺方便的. shell文件的组成 shell语言环境 ...

  3. vb6-很简单的配置密码验证提示

    '很简单的配置密码验证提示 Dim add As String add = Trim(InputBox("请输入配置密码", "报表配置")) If add = ...

  4. 谁说C语言很简单?

    前两天,Neo写了一篇<语言的歧义>其使用C语言讨论了一些语言的歧义.大家应该也顺便了解了一下C语言中的很多不可思异的东西,可能也是你从未注意到的东西. 是的,C语言并不简单,让我们来看看 ...

  5. 在linux安装redis单机和集群后,如何在windows上使用redis客户端或者java代码访问错误的原因很简单,就是没有连接上redis服务,由于redis采用的安全策略,默认会只准许本地访问。需要通过简单配置,完成允许外网访问。

    这几天在学习在linux上搭建服务器的工作,可谓历经艰辛.可喜最后收获也不少. 这次是在linux上搭建redis服务器后从windows上缺无法访问,连接不上. 仔细回忆以前搭建nginx和ftp的 ...

  6. Windows下编译TensorFlow1.3 C++ library及创建一个简单的TensorFlow C++程序

    由于最近比较忙,一直到假期才有空,因此将自己学到的知识进行分享.如果有不对的地方,请指出,谢谢!目前深度学习越来越火,学习.使用tensorflow的相关工作者也越来越多.最近在研究tensorflo ...

  7. 我的第一个WCF程序,很简单适合我等菜鸟

    1.首先我罗列一下网站搜索并经过自己理解的WCF的含义: 1)WCF:(WIndows Communication Foundation)是由微软是由微软发展的一组数据通信的应用开发接口,可以翻译为W ...

  8. Windows窗体应用程序(非Console)使用libuv实现简单的异步WEB服务器

    libuv是一个很强大的异步处理框架(严格意义上不能叫框架,其实就是一组异步函数库,当然框架这东西有各种各样的定义和理解_^...),最初的的目的是用于NODEJS的异步处理,不过因为它是一个独立的项 ...

  9. 快速解决:windows安装程序无法将windows配置为在此计算机的硬件上运行

    用手工运行msoobe.ext启用配置的方法, 快速解决:windows安装程序无法将windows配置为在此计算机的硬件上运行   我自己安装碰到的是蓝色这个错误,下面这个也有网友说用安装驱动等方法 ...

随机推荐

  1. Unity3d优化总结2

    优化: 1. 更新不透明贴图的压缩格式为ETC 4bit,因为android市场的手机中的GPU有多种, 每家的GPU支持不同的压缩格式,但他们都兼容ETC格式, 2. 对于透明贴图,我们只能选择RG ...

  2. ubuntu 解压命令全部

    .tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)-------------------------- ...

  3. WebService的初级学习

    复习准备 1. Schema约束: 1.1   namespace相当于Schema文件的id: 1.2   targetNamespace属性用来指定schema文件的namespace的值; 1. ...

  4. Iframe 父子窗体互调javascript方法及相互获取控件

    父窗体中的Iframe标签如下,子窗体为Default.aspx; <iframe id="left" name="left" src="Def ...

  5. HttpClient使用学习

    import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apac ...

  6. 推荐一个 HTML5在线的流程图工具——ProcessOn

    一直想找个简单好用的UML建模工具,无意在茫茫百度中看见了网友推荐的N多工具,从中找了一个叫 ProcessOn 的工具,可以说非常棒.如果我是WEB开发人员,我肯定去深入研究HTML5啦,太令人着迷 ...

  7. Woody的Python学习笔记3

    Python运算符 Python逻辑运算符 and布尔与-假设x为false.x and y返回false,否则它返回y的计算值. or 布尔或-假设x是true,它返回true.否则它返回y的计算值 ...

  8. WPF进阶之接口(2):IDisposable,ICollectionView

    废话不多说,进入正题,先来说说IDisposable,看例子(来自MSDN): using System; using System.ComponentModel; // 下面的例子将展示一个实施了I ...

  9. IOS 预览word文档的集中方式

    在iPhone中可以很方便的预览文档文件,如:pdf.word等等,这篇文章将以PDF为例.介绍三种预览PDF的方式,又分别从本地pdf文档和网络上的pdf文档进行对比. 预览本地PDF文档: 1.使 ...

  10. JS图片加载时获取图片宽高信息

    ; var img = new Image(); img.src = node.find("img[class='img1_1']").attr("src"); ...