我负责的应用程序的部分安装编译了一些 C 代码库。这是使用 GNU Make 在控制台中完成的。

因此,作为安装的一部分,控制台窗口会弹出,您可以在编译和链接时看到 make 文件输出向导,完成后控制台窗口关闭并且安装程序继续。

一切都很好,除非出现编译错误。然后,在您有机会弄清楚发生了什么之前,make 文件就会出错并且控制台窗口会关闭。

因此,如果 makefile 出现错误,我希望控制台窗口暂停并具有“按某个键继续”类型的功能,以便控制台保持打开状态。否则,只需正常退出并关闭控制台即可。

我不知道如何在 GNU Makefile 或可以运行 Make 的批处理文件中执行此操作。

有帮助吗?

解决方案

这应该可以解决问题:

if not ERRORLEVEL 0 pause

类型 help if 在 DOS 中了解有关错误级别使用的更多信息。

其他提示

这就是您正在寻找的:

if ERRORLEVEL 1 pause

如果您输入

HELP IF

你得到这个信息:错误级数|如果最后一个程序运行返回出口代码,则指定真实条​​件 等于或大于 指定的数量。

使用这个简单的 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;
    }
}

我们可以在 a 中测试退出代码 批处理文件 像这样:

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

自从 ERRORLEVEL1 通常意味着存在错误,并且 0 没有错误,我们只需增加比较条件中的最小值即可得到我们想要的结果,如下所示:

test.exe 0
IF ERRORLEVEL 1 PAUSE

健康)状况: -1 => 1 == FALSE

健康)状况: 0 => 1 == FALSE

健康)状况: 1 => 1 == TRUE

在这个例子中。脚本将在以下情况暂停 ERRORLEVEL1 或更高

请注意,这允许 -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

您尝试过“暂停”命令吗?

@echo off
echo hello world
pause
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top