批处理常用命令总结
在研究ELK的过程中发现elastic和logstash必须依赖1.8以上版本的jdk,但是公司的项目主要是依赖于1.7版本的jdk,更要命的是项目所使用的ESB解决方案(Mule ESB
)只支持1.6和1.7的特定版本。经过百度一番之后发现可以修改elastic
和logstash
的bat
文件来显式指定jdk
来解决程序依赖全局JAVA_HOME
的问题
什么是批处理命令
批处理是一种简化的脚本语言,是由DOS或者windows系统内嵌的命令解释器(COMMAND.COM/CMD.EXE)解释运行。类型与shell
脚本
常用的命令
echo
显示消息,或将命令回显打开或关闭rem
注释代码(可回显)pause
暂停批处理文件的处理并显示消息call
从另一个批处理程序调用这个start
启动单独的窗口以运行指定的程序或命令goto
与label
命令跳转set
设置变量
更多详情可在windows命令窗口输入HELP来查看详情
常用的符号
@
符号
屏蔽当前行的回显
|
|
这行命令表示不在控制台显示echo off
命令, 同时echo off
又可以关闭后续命令的回显,因此这是大部分批处理文件的通用起始代码。
重定向符号(输出)
将输出信息重定向至指定的设备或文件。系统默认输出到显示器
重定向符号有>
,>>
两种
>
符号会覆盖目标的原有内容>>
符号则是在目标内容的结尾追加
重定向符号(输入)
将输入信息来源重定向为指定的设备或文件
|
|
管道符号 |
将管道符号前面的命令的输出结果输出到管道符号后面的命令中去,作为下一个命令的输入
转义符号
将特殊符号转化为一般符号 特殊符号指: |
&
>
<
逻辑命令 &
&&
||
&
连接多个DOS命令,并把这些命令按顺序执行,而不管是否有命令执行失败;&&
当前面的命令成功执行才会执行后面的命令,否则不执行(起到短路的效果)||
当前面的命令执行失败时才会执行后面的命令,否则不执行
语句结构
条件判断
if语句实现条件判断
循环结构
for语句可以实现类似于C语言里面的循环结构,当然for语句的功能要更强大一点,通过不同的开关可以实现更多的功能。for语句有多个开关,不同开关将会实现不同的功能。
- 无开关
无开关的for语句能够对设定的范围内进行循环,其命令格式为1FOR %%variable IN (set) DO command
示例:
- 含开关
/L
含开关/L的for语句,可以根据set里面的设置进行循环,从而实现对循环次数的直接控制。其命令格式为:
|
|
其中,start为开始计数的初始值,step为每次递增的值,end为结束值。当end小于start时,step需要设置为负数。
示例: 新建5个文件夹,文件夹名称依次为1,3,5,7,9
- 含开关
/F
含开关/F
的for
语句具有最强大的功能,它能够对字符串进行操作,也能够对命令的返回值进行操作,还可以访问硬盘上的ASCII
码文件,比如txt
文档等。其命令格式为:12@echo offFOR /F ["options"] %%variable IN (set) DO command
其中set为(”string”, “commond”, “file-set”)中的一个
系统变量
- SystemDrive 当前启动的系统所在的分区
- SystemRoot 当前系统所在的目录
- windir 当前启动的系统所在的目录
- userprofile 当前用户数据变量
- cd 当前的目录
- computername 返回计算机名称
- username 返回当前登录的用户的名称
- date 返回当前日期
- time 返回当前时间
- os 返回操作系统名称
path 可执行文件的搜索路径
JAVA_HOME (配置的全局变量)