zoukankan      html  css  js  c++  java
  • 脚本其实很简单-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:Usersqjx>wmic os list brief
    BuildNumber  Organization  RegisteredUser  SerialNumber             SystemDirectory      Version
    17134                                      00329-00000-00003-AA288  C:WINDOWSsystem32  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:OwnWeChatcourse2>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:OwnWeChatcourse2>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:OwnWeChatcourse2>tmp2.bat
    "num1<num2"
    
    • 重定向

    功能概述:
    重定向的作用是将命令行的输出结果输出到文件。

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

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

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

    如有错误请指出

  • 相关阅读:
    cookie的过期时间
    Cookie的使用及位置
    用存储过程进行的查询拼接
    验证码的使用
    SQLHelper
    App_code的引用
    GridView使用
    javascript、ajax验证
    数据库小结(三)
    数据库操作(七)存储过程
  • 原文地址:https://www.cnblogs.com/qjx-2016/p/10381566.html
Copyright © 2011-2022 走看看