欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

bat文件运行闪退

程序员文章站 2022-03-30 20:21:23
...

1、 今天写了一个bat文件,但是运行时出现闪退,系统不做反应,回头查了下资料,再联想到前两天修改系统语言的事,发现是在我保存文件时将编码格式弄错了,后来换成了ANSI格式就OK了—from Vae_smr
2、症状
安装 Tomcat 之后运行 startup.bat 命令行闪退

方案
打开 startup.bat 文件,在文件最后添加一行 pause,表示暂停,就可以看到命令行中的报错信息了----from 怪伽先森
3、今日运行一个BAT脚本文件,发现仅仅闪了一下就退出了。于是我认为.BAT脚本文件本身有错误,所以开始排错,以下是我排除错误的步骤:

      1.由于别处原先存在一个此BAT文件的拷贝,而别处的那一个能正常运行,但这一个BAT却不能正常运行,利用比较工具比较发现两个BAT文件的内容完全相同。所以排除了书写错误。

       2.鉴于以上的基础上,我只能怀疑是位置变了,BAT文件里面引用的相对路径解析成绝对路径后肯定变化了,可能因为绝对路径的不同会有影响,因此我加了个中pause一步步的试,发现也不是这个原因。

       3.郁闷啊,无解啊。正在此时我发现了一个关键的问题,那就是此次不能运行的BAT文件所在的文件夹名字里面包含了括号。因此我觉得问题可能是这个括号的原因,赶紧将括号去掉,一运行,瞬间不再闪退了,搞定。看来问题真的是BAT文件所在文件夹的名字里面包含了括号的原因啊。

       好吧,既然已经知道问题所在了,那么当然很好奇有没有别人遇到过,或者有没有对这个问题的详细描述呢?果断百度啊,可是发现的线索很少,仅仅一个微软的英文资料里面有提到。看来我是个大奇葩,居然这么小概率的事件让我遇到了。英文资料的网址:http://support.microsoft.com/kb/217127/en-us。

       基本意思是说.BAT脚本文件名里面不能有括号,否则会将括号解释成为命令的。如果你非要用带括号的名字来命名BAT脚本文件,可以在cmd窗口里面将文件用引号括起来就行了。图例如下:

        

         但我今天这个问题算是一个新发现,那就是不仅BAT文件本身的名字里面不能包含括号字符,就连BAT文件所在的文件夹以及更上层的文件夹的命名都不能包含括号。

————————————————
版权声明:本文为CSDN博主「springontime」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/springontime/article/details/22659523—from springontime

4、 今天执行一个bat命令,然而会出现问题:双击执行bat命令时,命令提示符界面会闪退。

然而该bat命令在他人电脑上可正常执行,而我会遇到这种问题。

以下是我尝试的方法:

首先尝试编辑bat命令,在bat命令末尾添加pause,保存。如此,重新双击执行bat命令,命令提示符界面仍然闪退。
接着借助浏览器查询这种问题发生的原因以及解决方法,https://blog.csdn.net/springontime/article/details/22659523,此文的结论就是:不仅BAT文件本身的名字里面不能包含括号字符,就连BAT文件所在的文件夹以及更上层的文件夹的命名都不能包含括号。同理可推断,我所运行的bat文件上层的文件夹虽然没有括号,但是存在空格“D:\Program Files…”,于是最终决定将该bat命令剪切到一个新的路径。
经过以上尝试,最终bat命令可以正常执行,不再发生闪退。

(学习过c语言里面的字符类型,一般来说空格,括号等都属于同一类型字符,故此有类推)-----from BluthLeee