脚本其实很简单-windows配置核查程序(2)
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脚本的编写。
如有错误请指出