问题1:在运行bat文件时,for循环内部的变量无法用echo打印,总是显示回显状态或者将echo后面的内容当作字符输出。

代码及双击bat运行结果如下:

bat运行java error occurred during initialization of VM bat运行不了怎么解决_解决方法

bat运行java error occurred during initialization of VM bat运行不了怎么解决_解决方法_02

注意:命令行和bat的循环变量写法有差异,命令行循环变量为%i,bat为%%i

解决方法:win+R 打开cmd之后,进入bat所在的目录下,拖拽进去运行,就可以正常显示。若还是显示回显状态,不要关闭当前窗口,重新运行即可。

bat运行java error occurred during initialization of VM bat运行不了怎么解决_命令行_03

大概原理推测,无法正常运行是因为bat和cmd.exe所基于的系统差异导致的。
bat文件是dos下的批处理文件,后缀为.cmd或.bat,在Windows NT系统中,两者没有任何区别。cmd是cmd.exe,是Win32命令,只能在32位系统中的命令行窗口中使用,仅仅是基于windows环境下的假DOS。cmd文件的描述是“windows nt命令脚本”,bat文件的描述是“ms dos批处理文件”;两者所使用的命令行代码是共用的,只是cmd文件中允许使用的命令要比bat文件多。(欢迎留言补充指正)
 

问题2:循环里的累加器总显示固定值

 

bat运行java error occurred during initialization of VM bat运行不了怎么解决_预处理_04

 运行显示如下:

bat运行java error occurred during initialization of VM bat运行不了怎么解决_预处理_05

 解决方法:这是由于批处理的预处理机制造成的,开启延迟变量即可。具体做法为在echo off后加上SETLOCAL ENABLEDELAYEDEXPANSION,并将累加器a的打印方式改为!a!

bat运行java error occurred during initialization of VM bat运行不了怎么解决_命令行_06

解释:批处理运行时,首先将for语句完整读入内存中,就开始了预处理机制:%进行变量的扩展,通俗点说就进行变量的替换。首先会将两个%以及百分号之间的内容进行替换,由于在for语句运行之前%a%是零,所以都显示零。开启延迟变量就可以。

问题3:复合语句set变量之后echo打印不出来变量的值

 

bat运行java error occurred during initialization of VM bat运行不了怎么解决_解决方法_07

解决方法: 将 %name% 改为 !name! 即可

如果出现运行bat后无反应,可以检查循环括号是否丢失,或者是否有语法错误。

若出现总显示回显的状态,说名echo之后的变量无法识别。命令行只有echo后面不加任何变量,会直接打印回显状态。

不会的指令可以通过 [指令]  /?来打印查看说明。