在研究ELK的过程中发现elastic和logstash必须依赖1.8以上版本的jdk,但是公司的项目主要是依赖于1.7版本的jdk,更要命的是项目所使用的ESB解决方案(Mule ESB)只支持1.6和1.7的特定版本。经过百度一番之后发现可以修改elasticlogstashbat文件来显式指定jdk来解决程序依赖全局JAVA_HOME的问题

什么是批处理命令

批处理是一种简化的脚本语言,是由DOS或者windows系统内嵌的命令解释器(COMMAND.COM/CMD.EXE)解释运行。类型与shell脚本

常用的命令

  • echo 显示消息,或将命令回显打开或关闭
  • rem 注释代码(可回显)
  • pause 暂停批处理文件的处理并显示消息
  • call 从另一个批处理程序调用这个
  • start 启动单独的窗口以运行指定的程序或命令
  • gotolabel 命令跳转
  • set 设置变量

更多详情可在windows命令窗口输入HELP来查看详情

常用的符号

@符号

屏蔽当前行的回显

1
@echo off

这行命令表示不在控制台显示echo off命令, 同时echo off又可以关闭后续命令的回显,因此这是大部分批处理文件的通用起始代码。

重定向符号(输出)

将输出信息重定向至指定的设备或文件。系统默认输出到显示器
重定向符号有>,>>两种

> 符号会覆盖目标的原有内容
>> 符号则是在目标内容的结尾追加

重定向符号(输入)

将输入信息来源重定向为指定的设备或文件

1
2
3
4
5
6
@echo off
echo 拖动txt文件至窗口查看文件名称
set /p content=
echo %content%
pause

管道符号 |

将管道符号前面的命令的输出结果输出到管道符号后面的命令中去,作为下一个命令的输入

转义符号

将特殊符号转化为一般符号 特殊符号指: | & > <

逻辑命令 & && ||

& 连接多个DOS命令,并把这些命令按顺序执行,而不管是否有命令执行失败;
&& 当前面的命令成功执行才会执行后面的命令,否则不执行(起到短路的效果)
|| 当前面的命令执行失败时才会执行后面的命令,否则不执行

语句结构

条件判断

if语句实现条件判断

1
2
set /p choice=是否显示当前时间? (y/n)
if /i not %choice% EQU n echo 当前时间是: %date% %time%

循环结构

for语句可以实现类似于C语言里面的循环结构,当然for语句的功能要更强大一点,通过不同的开关可以实现更多的功能。for语句有多个开关,不同开关将会实现不同的功能。

  1. 无开关
    无开关的for语句能够对设定的范围内进行循环,其命令格式为
    1
    FOR %%variable IN (set) DO command

示例:

1
2
@echo off
for %%i in (a,"b c",d) do echo %%i

  1. 含开关/L
    含开关/L的for语句,可以根据set里面的设置进行循环,从而实现对循环次数的直接控制。其命令格式为:
1
FOR /L %%variable IN (start, step, end) DO command

其中,start为开始计数的初始值,step为每次递增的值,end为结束值。当end小于start时,step需要设置为负数。

示例: 新建5个文件夹,文件夹名称依次为1,3,5,7,9

1
2
3
@echo off
for /l %%i in (1, 2, 10) do md %%i
pause

  1. 含开关/F
    含开关/Ffor语句具有最强大的功能,它能够对字符串进行操作,也能够对命令的返回值进行操作,还可以访问硬盘上的ASCII码文件,比如txt文档等。其命令格式为:
    1
    2
    @echo off
    FOR /F ["options"] %%variable IN (set) DO command

其中set为(”string”, “commond”, “file-set”)中的一个

系统变量

  1. SystemDrive 当前启动的系统所在的分区
  2. SystemRoot 当前系统所在的目录
  3. windir 当前启动的系统所在的目录
  4. userprofile 当前用户数据变量
  5. cd 当前的目录
  6. computername 返回计算机名称
  7. username 返回当前登录的用户的名称
  8. date 返回当前日期
  9. time 返回当前时间
  10. os 返回操作系统名称
  11. path 可执行文件的搜索路径

  12. JAVA_HOME (配置的全局变量)