bat脚本是什么?

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

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

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

前期概要

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

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

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

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

源代码如下(有删减)

@echo off

rem 采集内存总容量
for /f "skip=1" %%i in ('wmic os get TotalVisibleMemorySize') do (
if %%i geq 0 set totalMem=%%i
)
set /a tmp=%totalMem%/1024
set totalMem=%tmp:~0,-3%.%tmp:~-3%G echo 总内存容量:%totalMem%
echo -----------------------------------------
rem 设置2秒的延迟
ping 127.0.0.1 -n 2 > null rem 采集磁盘信息
echo 磁盘信息(可用/总量)
wmic LOGICALDISK get DeviceID,FreeSpace,Size > tmp.txt
for /f "skip=1 tokens=1,2,3*" %%i in ('type tmp.txt') do (
set totalDisk=%%k
set freeDisk=%%j
set /a tmp1=!freeDisk:~0,-5!/1074
set /a tmp2=!totalDisk:~0,-5!/1074
set diskStr=%%i!tmp1:~0,-1!.!tmp1:~-1!G/!tmp2:~0,-1!.!tmp2:~-1!G
echo !diskStr!
)
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

示例:

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

示例:

wmic os list brief

输出结果

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

总结:

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

  • 截取字符串

功能概述:

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

参数说明:

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

示例:

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

输出

G:\Own\WeChat\course2>tmp2.bat
123456
123
1234
6
  • 延迟执行

功能概述:

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

示例

@echo off

echo 11111
ping 127.0.0.1 -n 3 > null
echo 22222

结果:

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

功能概述:

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

EQU - 等于

NEQ - 不等于

LSS - 小于

LEQ - 小于或等于

GTR - 大于

GEQ - 大于或等于

@echo off

set num1=11
set num2=22
if %num1% equ %num2% echo "num1=num2"
if %num1% gtr %num2% echo "num1>num2"
if %num1% lss %num2% echo "num1<num2"

结果:

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

功能概述:

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

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

总结:

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

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

如有错误请指出

最新文章

  1. JAVA 使用POI导出数据格式为Execl
  2. Dao 处理
  3. 教你正确地利用Netty建立连接池
  4. Python即时网络爬虫项目: 内容提取器的定义(Python2.7版本)
  5. 记录下自己写的gulp打包脚本
  6. spring不依赖注入得到实体bean
  7. 第5天:js-系统时间对象
  8. 7.28.2 static关键字(静态和成员)
  9. 【移动端】移动端字体单位font-size选择px还是rem
  10. 年度游戏圈2018白皮书解析手游折扣app哪个好及靠谱程度分析
  11. Linux学习笔记:常用软件
  12. ★★★kalinux 常用命令
  13. enum-枚举当做key-value业务使用
  14. chrome ui源码剖析-Accelerator(快捷键)
  15. Python中的and和or
  16. java 中 Cannot make a static reference to the non-static 解决方法
  17. VuePress从零开始搭建自己的博客
  18. ssh key生成步骤
  19. PHP 正则表达式(PCRE)
  20. hdu 1754 线段树 单点更新 动态区间最大值

热门文章

  1. 在后台运行Python脚本服务
  2. Stochastic Multiple Choice Learning for Training Diverse Deep Ensembles
  3. 【BZOJ】1037: [ZJOI2008]生日聚会Party(递推+特殊的技巧)
  4. UVALive 6044(双连通分量的应用)
  5. Tanks案例笔记(一、场景搭建)
  6. MD5骨骼动画模型加载
  7. Git 安装与使用
  8. poj_2823 单调队列
  9. Python中的一些函数
  10. 160314、MVC设计模式