我负责的应用程序的部分安装,编译一些C代码库。这是在使用GNU Make的控制台中完成的。
因此,作为安装的一部分,控制台窗口会弹出打开,在完成控制台窗口关闭并且安装程序继续时,您会在编译和链接时看到make文件输出。
一切都很好,除非有编译错误。然后,在你有机会弄清楚发生了什么之前,make文件就会出错并且控制台窗口会关闭。
所以,我想要发生的是让控制台窗口暂停,按下“按键继续”类型功能,如果makefile出错,那么控制台保持打开状态。否则,只需正常退出并关闭控制台。
我无法弄清楚如何在GNU Makefile中或从可以运行Make的批处理文件中执行此操作。
答案 0 :(得分:9)
这应该可以解决问题:
if not ERRORLEVEL 0 pause
在DOS中键入help if
以获取有关错误级别使用的更多信息。
答案 1 :(得分:2)
这就是你要找的东西:
if ERRORLEVEL 1 pause
如果您输入
HELP IF
你得到这个信息:ERRORLEVEL号码| 如果最后一个程序运行返回退出代码等于或大于指定的数字,则指定真实条件。
答案 2 :(得分:1)
使用这个简单的C程序来操作退出代码:
#include <stdio.h>
main(int argc, char *argv[]) {
if (argc == 2) {
// return integer of argument 1
return strtol(argv[1], NULL, 10);
}
else {
return 0;
}
}
我们可以在批处理文件中测试退出代码,如下所示:
test.exe 0
IF ERRORLEVEL 0 PAUSE
条件:0 => 0 == TRUE
当ERRORLEVEL = 0
时,暂停将会发生,因为逻辑是>=
或大于或等于。这很重要,因为它并不是很清楚,条件不是==
比较。
请注意,替换1 => 0
也是正确的,因此暂停也会发生。任何正数都是如此。
我们只能通过低于0
:
test.exe -1
IF ERRORLEVEL 0 PAUSE
条件:-1 => 0 == FALSE
由于ERRORLEVEL
1
通常意味着存在错误,并且0
没有错误,我们可以在比较条件中增加最小值以获得我们想要的结果:
test.exe 0
IF ERRORLEVEL 1 PAUSE
条件:-1 => 1 == FALSE
条件:0 => 1 == FALSE
条件:1 => 1 == TRUE
在这个例子中。 ERRORLEVEL
1
或更高
请注意,这允许-1
退出代码与0
相同。如果只想让0
暂停,该怎么办?我们可以使用单独的语法:
test.exe 0
IF NOT %ERRORLEVEL% EQU 0 PAUSE
条件:-1 != 0 == TRUE
条件:0 != 0 == FALSE
条件:1 != 0 == TRUE
在此示例中,如果%ERRORLEVEL%
不是0
,脚本会暂停我们可以通过使用EQU运算符首先检查是否%ERRORLEVEL% EQU 0
来执行此操作,然后使用NOT运算符来获取相反的结果效果,相当于!=
运算符。但是,我相信这只适用于NT机器,而不是普通的DOS。
参考文献:
http://chrisoldwood.blogspot.ca/2013/11/if-errorlevel-1-vs-if-errorlevel-neq-0.html http://ss64.com/nt/errorlevel.html
答案 3 :(得分:0)
您是否尝试过'暂停'命令?
@echo off
echo hello world
pause