bat脚本踩坑记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bat脚本踩坑记相关的知识,希望对你有一定的参考价值。

背景:由于系统需求写个小小的判断语句判断语句是否执行成功,但好像总是执行成功的分支
脚本如下:
@echo off
set logfile=E:\log.txt
tasklist /V /S localhost | findstr Wechat.exe
if errorlevel 0 goto a
if errorlevel 1 goto b
:a
echo 123>%logfile%
exit
:b
echo 234>%logfile%
exit

检查日志发现总是写的123,这是为什么呢?
使用 if errorlevel 的时候,应该把数字高的放在前面,因为此处的 if errorlevel 0 是在命令返回值大于 0 的时候成立的,相当于 if %errorlevel% geq 0,而当匹配失败时 errorlevel 等于 1,当然符合大于 0 的条件了。
解决办法:
1、调转顺序,先执行 errorlevel 值高的 if 命令
2、使用 if %errorlevel%==0 这里的 %errorlevel% 将被预处理成固定值,与数字 0 进行数值比较,也就不存在返回值大于 0 时产生的问题了

以上是关于bat脚本踩坑记的主要内容,如果未能解决你的问题,请参考以下文章

bat脚本隐藏窗口运行

如何让bat脚本循环执行?

bat脚本如何调用JAVA程序

powershell 远程执行bat脚本,去启动一个应用,如何让应用一直运行,powershell能正常退出?

windows设置SpringBoot程序(bat脚本)开机自启

求一个bat脚本,判断一条命令执行的返回结果