• 常用批处理命令总结6


    1. 显示、设置或删除变量:Set命令

      显示变量:set 或 set s 前者显示批处理当前已定义的所有变量及其值,后者显示所有以s开头的变量及值。

      设置变量:set aa=abcd 此句命令便可向变量aa赋值abcd。如果变量aa已被定义,则aa的值被修改为abcd;若aa尚未定义,则此句命令即可定义新的变量aa,同时为变量aa赋予初始值abcd。

      删除变量:set aa= 此句命令即可删除变量aa。若变量aa已被定义,则删除变量aa;若aa尚未定义,则此句命令为实质意义。

      需要说明的是,批处理中的变量是不区分类型的,不需要像C语言中的变量那样还要区分int、float、char等。比如执行set aa=345后,变量aa的值既可以被视为数字345,也可以被视为字符串345。

    set命令具有扩展功能,如用作交互输入、字符串处理、数值计算等,属于高级命令范畴。    

    set #显示目前所有可用的变量,包括系统变量和自定义的变量

    set p #显示所有以p开头的变量,要是一个也没有就设errorlevel=1

    set /a p=39/10 #支持运算符,有小数时用去尾法,39/10=3.9,去尾得3,p=3set /a p=p/10 #用 /a

    set p= #取消p变量

    set /p p=请输入 ::此时屏幕上显示"请输入",并会将输入的字符串赋值给变量p注意这条可以用来取代 choice 命令

    有几个动态变量,运行 set 看不到

    %CD% #代表当前目录的字符串

    %DATE% #当前日期

    %TIME% #当前时间

    %RANDOM% #随机整数,介于0~32767

    %ERRORLEVEL% #当前ERRORLEVEL 值

    %CMDEXTVERSION% #当前命令处理器扩展名版本号

    %CMDCMDLINE% #调用命令处理器的原始命令行可以用echo命令查看每个变量值,如 echo %time%注意 %time% 精确到毫秒,在批处理需要延时处理时可以用到

     批处理数值计算需要使用set命令,具体格式为"set /a expression"。其中,expression代表计算表达式,计算表达式跟C语言里面的表达式基本上完全一致。set支持的运算符也跟C语言里面的一样,只是没有了増一减一。set支持的运算符及优先级排序如下:

      () - 分组

      ! ~ - - 一元运算符(逻辑非、按位非、取负)

      * / % - 算数运算符(乘、除得商、除得余数,即取余)

      + - - 算数运算符(加、减)

      << >> - 逻辑移位(左移一位、右移一位)

      & - 按位"与"

      ^ - 按位"异"

      | - 按位"或"

      = *= /= %= += -= - 赋值

      &= ^= |= <<= >>=

      , - 表达式分隔符(set可一次处理多个表达式)

    批处理中取变量的值是需要用%或者!的,而在set /a 中,直接用变量名称即可取得变量的值。另外,set支持八进制(数字前缀0)、十进制(数字无前缀)和十六进制(数字前缀0x),且支持不同进制之间的计算,如set /a a=123+0123+0x123,计算及显示结果为十进制。

    set常用法总结:

    设置变量: set a=1

    变量需要运算则需要用set /a 如: set /a num+=1

    让用户输入一行变量:set /p

    2. tasklist----------查找当前系统进程(包含pid)

    3. 结束进程tskill、taskkill(比tskill高级)

    taskkill /参数 进程名或进程的pid ------------- 终止一个或多个任务和进程。

    参数说明:/pid 要终止进程的pid,可用tasklist命令获得各进程的pid,/IM 要终止的进程的进程名,/F 强制终止进程,/T 终止指定的进程及他所启动的子进程。 例:taskkill /pid 2330 /f

    4.批处理修改注册表

    1)、reg add:将新的子项或项添加到注册表中。

    语法: reg add KeyName [/v EntryName|/ve] [/t DataType] [/s separator] [/d value] [/f]

    参数: KeyName指 定子项的完全路径。忽略 ComputerName 会导致默认对本地计算机进行操作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。

    /v EntryName 指定要添加到指定子项下的项名称。

    /ve 指定添加到注册表中的项为空值。

    /t DataType 指定项值的数据类型。DataType 默认为REG_SZ 字符串型。

    /s separator 指定用于分隔多个数据实例的字符。当 REG_MULTI_SZ 指定为数据类型且需要列出多个项时,请使用该参数。如果没有指定,将使用默认分隔符为 \。

    /d value 指定新注册表项的值。

    /f 不用询问信息而直接添加子项或项。

    reg add 操作的返回值. 0 成功1 失败

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v "path" /d "C:\Program Files\Java\jdk1.6.0\bin;C:\Program Files\Java\jdk1.6.0;%path%" /f

    2)、reg compare:比较指定的注册表子项或项。

    语法: reg compare KeyName1 KeyName2 [/v EntryName | /ve] {[/oa]|[/od]|[/os]|[on]} [/s]

    3)、reg copy:将一个注册表项复制到本地或远程计算机的指定位置。

    语法: reg copy KeyName1 KeyName2 [/s] [/f]

    4)、reg delete:从注册表删除项或子项

    语法: reg delete KeyName [{/v EntryName|/ve|/va}] [/f]

    5)、reg export :将指定子项、项和值的副本创建到文件中,以便将其传输到其它服务器。

    reg export KeyName FileName

    参数:KeyName 指定子项的完全路径。Export 操作仅可在本地计算机上工作。以相应的子目录树开始路径。有效子目录树为 HKLM、HKCU、HKCR、HKU 以及 HKCC。

    FileName 指定要导出文件的名称和路径。该文件必须具有 .reg 扩展名。

    reg export 操作的返回值0 成功 ;1 失败 。

    reg export "hkcu\software\microsoft\winmine" c:\data\regbackups\wmbkup.reg

    6)、reg import:将包含导出的注册表子项、项和值的文件复制到本地计算机的注册表中。

    reg import FileName

    7)、reg load:将保存的子项和项写回到注册表的不同子项中。其目的是保存到一个临时文件中,而该文件可用于注册表项的疑难解答或编辑注册表项。

    语法 :reg load KeyName FileName

    8)、reg query:返回注册表的子项下的项和下一层子项的列表。

    语法:reg query KeyName [{/v EntryName|/ve}] [/s]

    9)、reg restore :将保存的子项和项写回到注册表。

    语法: reg restore KeyName FileName

    说明:该操作用于覆盖已编辑的注册表项。编辑注册表项之前,请使用 reg save 操作保存父亲子项。如果编辑失败,则可以使用本操作恢复子项。

    10)、reg save将指定的子项、项和注册表值的副本保存到指定文件中。

    语法:reg save KeyName FileName

    11)、reg unload:使用 reg load 操作删除已加载的部分注册表。

    语法: reg unload KeyName

    有些注册表键值修改后需要重启资源管理器生效,可以这样实现:

    taskkill /f /im explorer.exe

    start explorer.exe

    有些注册表键值修改后需要刷新桌面生效,可以这样实现: RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters

    有些注册表键值修改后可以直接生效。有些注册表键值修改后需要重启explorer生效。有些注册表键值修改后必须重启或者注销才能生效。

    编辑注册表不当可能会严重损坏您的系统。在更改注册表之前,应备份计算机上任何有价值的数据。

    5、字符串处理

     批处理有着具有非常强大的字符串处理能力,其功能绝不低于C语言里面的字符串函数集。批处理中可实现的字符串处理功能有:截取字符串内容、替换字符串特定字段、合并字符串、扩充字符串等功能。

      【 1、截取字符串 】

      截取字符串可以说是字符串处理功能中最常用的一个子功能了,能够实现截取字符串中的特定位置的一个或多个字符。举例说明其基本功能:

    @echo off

      set ifo=abcdefghijklmnopqrstuvwxyz0123456789

      echo 原字符串(第二行为各字符的序号):

      echo %ifo%

      echo 123456789012345678901234567890123456

      echo 截取前5个字符:

      echo %ifo:~0,5%

      echo 截取最后5个字符:

      echo %ifo:~-5%

      echo 截取第一个到倒数第6个字符:

      echo %ifo:~0,-5%

      echo 从第4个字符开始,截取5个字符:

      echo %ifo:~3,5%

      echo 从倒数第14个字符开始,截取5个字符:

      echo %ifo:~-14,5%

      pause

      当然,上面的例子只是将字符串处理的基本功能展示出来了,还看不出字符串处理具体有什么用处。下面这个例子是对时间进行处理。

      @echo off

      echo 当前时间是:%time% 即 %time:~0,2%点%time:~3,2%分%time:~6,2%秒%time:~9,2%厘秒

      pause

      【 2、替换字符串 】

      替换字符串,即将某一字符串中的特定字符或字符串替换为给定的字符串。举例说明其功能:

      @echo off

      set aa=伟大的中国!我为你自豪!

      echo 替换前:%aa%

      echo 替换后:%aa:中国=中华人民共和国%

      echo aa = %aa%

      set "aa=%aa:中国=中华人民共和国%"

      echo aa = %aa%

      pause

      对于上面的例子有一点说明,对比两个echo aa = %aa%可以发现,如果要修改变量aa的内容的话,就需要将修改结果"%aa:中国=中华人民共和国%"赋值给变量aa。上面的字符串截取也有着同样的特点。

      【 3、字符串合并 】

      其实,合并字符串就是将两个字符串放在一起就可以了。举例说明:

      @echo off

      set aa=伟大的中国!

      set bb=我为你自豪!

      echo %aa%%bb%

      echo aa=%aa%

      echo bb=%bb%

      set "aa=%aa%%bb%"

      echo aa=%aa%

      pause

      同样,如果要改变变量aa的内容的话,就需要将合并结果"%aa%%bb%"赋值给变量aa。

      【 4、扩充字符串 】

      对表示文件路径的字符串进行特殊的处理,具体功能罗列如下:

      ~I - 删除任何引号("),扩充 %I

      %~fI - 将 %I 扩充到一个完全合格的路径名

      %~dI - 仅将 %I 扩充到一个驱动器号

      %~pI - 仅将 %I 扩充到一个路径

      %~nI - 仅将 %I 扩充到一个文件名

      %~xI - 仅将 %I 扩充到一个文件扩展名

      %~sI - 扩充的路径只含有短名

      %~aI - 将 %I 扩充到文件的文件属性

      %~tI - 将 %I 扩充到文件的日期/时间

      %~zI - 将 %I 扩充到文件的大小

      %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个完全合格的名称。如果环境变量名 未被定义,或者没有找到文件,此组合键会扩充到 空字符串

      可以组合修饰符来得到多重结果:

      %~dpI - 仅将 %I 扩充到一个驱动器号和路径

      %~nxI - 仅将 %I 扩充到一个文件名和扩展名

      %~fsI - 仅将 %I 扩充到一个带有短名的完整路径名

      %~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充到找到的第一个驱动器号和路径。

      %~ftzaI - 将 %I 扩充到类似输出线路的 DIR

      =========================================

      其中的I代表变量I,不过需要说明的是,不是所有的变量都能够进行扩充的,有两个条件:1、该字符串代表一个文件路径;2、变量要用%x来表示,x可取a-z A-Z 0-9共62个字符中的任意一个。

    常用总结:

    字符串替换

    %var:str1=str2%:将字符串变量%var%中的str1替换为str2

    字符串截取

    %a:~[m[,n]]%

    %a:~0,n% 取左边n位

    %a:~-m% 取右边m位

    %a:~m,n% 从m+1位开始取n位

    %a:~m,-n% 从m+1位开始,至倒数n+1位

    %a:~m % 从m+1位开始取右边全部。

  • 相关阅读:
    python 文件路径拼接、判断、创建、输出
    热力图制作
    矩阵文件添加列标签
    cmd运行 ‘.py’ 文件
    hdu 2017 字符串统计
    hdu 2016 数据的交换输出
    hdu 2014 青年歌手大奖赛_评委会打分
    hdu 2013 蟠桃记
    hdu 2012 素数判定
    hdu 2011 多项式求和
  • 原文地址:https://www.cnblogs.com/doit8791/p/2513997.html
Copyright © 2020-2023  润新知