生活在合肥,爱上合肥社区

合肥163论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 150|回复: 0

常用批处理命令总结6

[复制链接]

141

主题

183

帖子

797

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
797
发表于 2018-8-13 19:14:24 | 显示全部楼层 |阅读模式

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]}

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

语法: reg copy KeyName1 KeyName2 [/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}]

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位开始取右边全部。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2013-2015 hefei163.com All Right Reserved.  Powered by Discuz! (已备案)

本站信息均由会员发表,不代表合肥社区立场,如侵犯了您的权利请发帖投诉

平平安安
TOP
快速回复 返回顶部 返回列表