这个Windows bat命令是什么意思?

时间:2014-12-16 12:47:26

标签: maven batch-file

我从批处理文件中读取以下命令,以在Windows mvn.bat上运行Maven:

if not "_%M2_HOME:~-1%"=="_\" goto checkMBat

if "%@eval[2+2]" == "4" goto 4NTArgs

这个批处理脚本是什么意思?

ADD 1

正如我尝试的那样,似乎_%M2_HOME:~-1%返回_加上环境变量"_%M2_HOME%的最后一个字母。但是这个语法的名称是什么?

3 个答案:

答案 0 :(得分:2)

第一个采用%M2_HOME%的最后一个字符,在前面添加一个下划线,并检查结果字符串是否为_\ - 简而言之,它检查%的最后一个字符M2_HOME%是使用substrings的反斜杠。

第二个是你如何确定你的计算机上是否安装了4NT;如果是,there will be a variable function called @eval

答案 1 :(得分:2)

%VAR:~-1%获取envvar中的最后一个字符。第一个代码段验证envvar M2_HOME不以\结尾。注意:Maven's docs说,

  

注意:对于Maven 2.0.9,还要确保M2_HOME没有'\'作为最后一个字符。

这可能是相关的。他们可能希望将M2_HOME添加到子目录名称并始终包含dirsep。 “_%...%”中的变量替换不受初始下划线的影响。以这种方式表达它只是确保下划线位于输出的开头。我不能肯定地说,但可能已经表达了避免反向引用的方式,例如: "\"

第二个不是我熟悉的任何CMD /批次。评论(假设这来自mvn.bat)说“4NT shell”,我认为这个批处理文件可以在Take Command Console中运行,它可能具有MS CMD功能的扩展。例如,%@eval[...]可能会numeric evaluation in 4NT。这实际上是检查脚本是否在4NT shell中运行。

答案 2 :(得分:0)

我在"_%M2_HOME:~-1%"链接下找到了解释。这是一个变量子串操作。

http://ss64.com/nt/syntax-substring.html