zoukankan      html  css  js  c++  java
  • 执行程序后errorlevel值的获取

         最近测试需要查看程序返回值,其中有的exe是用java编写的,而有的是c++编写的。但无论执行那个命令,结束后echo %errorlevel%的值都是0.也就是说,这些命令执行后都没有修改errorlevel的值。后来搜了很多帖子,发现问题出在执行命令的方式上。不能直接执行exe命令,而是要用start /w “” xx.exe,这里的start表示运行程序,而参数w即wait,等待命令执行结束。然后再执行echo %errorlevel%,就可以看到不同情况下的返回值了。

        上面的情况是在命令行下执行程序,如果在批处理脚本下执行命令则可不必写“start /w”,因为默认的执行程序相当于执行的start /w xx.exe,也即在该句等待xx.exe线程结束,再继续后面的命令操作。

    附 start用法:

    启动另一个窗口运行指定的程序或命令。

    START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
    [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
    [/AFFINITY <hex affinity>] [/WAIT] [/B] [command/program]
    [parameters]

    "title" 在窗口标题栏中显示的标题。
    path 启动目录
    B 启动应用程序,但不创建新窗口。应用程序已忽略 ^C 处理。除非应用程序启用 ^C 处理,否则 ^Break 是唯一可以中断该应用程序的方式
    I 新的环境将成为传递给 cmd.exe的原始环境,而不是当前环境。
    MIN 以最小化方式启动窗口
    MAX 以最大化方式启动窗口
    SEPARATE 在单独的内存空间中启动 16 位 Windows 程序
    SHARED 在共享内存空间中启动 16 位 Windows 程序
    LOW 在 IDLE 优先级类中启动应用程序
    NORMAL 在 NORMAL 优先级类中启动应用程序
    HIGH 在 HIGH 优先级类中启动应用程序
    REALTIME 在 REALTIME 优先级类中启动应用程序
    ABOVENORMAL 在 ABOVENORMAL 优先级类中启动应用程序
    BELOWNORMAL 在 BELOWNORMAL 优先级类中启动应用程序
    AFFINITY 新应用程序将具有指定的处理器关联掩码,用一
    十六进制数字表示。
    WAIT 启动应用程序并等待它终止
    command/program
    如果它是内部 cmd 命令或批文件,那么该命令处理器是使用 cmd.exe的 /K 开关运行的。
    这意味着运行该命令之后,该窗口将仍然存在。

    如果它不是内部 cmd 命令或批文件,那么它就是一个程序,并将作为一个窗口化应用程序或控制台应用程序运行。

    parameters 这些是传递给 command/program 的参数

    注意: 在 64 位平台上不支持 SEPERATE 和 SHARED 选项。

    如果命令扩展被启用,通过命令行或 START 命令的外部命令调用会如下改变:

    将文件名作为命令键入,非可执行文件可以通过文件关联调用。(例如,WORD.DOC 会调用跟 .DOC 文件扩展名关联的应用程序)。如何从命令脚本内部创建这些关联,请参阅 ASSOC 和
    FTYPE 命令。

    执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示符。如果在命令脚本内执行,该新行为则不会发生。

    如果执行的命令行的第一个符号是不带扩展名或路径修饰符的字符串 "CMD","CMD" 会被 COMSPEC 变量的数值所替换。这防止从当前目录提取 CMD.EXE。

    如果执行的命令行的第一个符号没有扩展名,CMD.EXE 会使用PATHEXT 环境变量的数值来决定要以什么顺序寻找哪些扩展名。PATHEXT 变量的默认值是:.COM;.EXE;.BAT;.CMD

    请注意,该语法跟 PATH 变量的一样,分号隔开不同的元素。

    查找可执行文件时,如果没有相配的扩展名,看一看该名称是否与目录名相配。如果确实如此,START 会在那个路径上调用Explorer。如果从命令行执行,则等同于对那个路径作 CD /D

  • 相关阅读:
    PyCharm不能使用Tab键进行整体向左缩进解决方法
    Python代码规范(PEP8)问题及解决
    Python学习开始
    Spring Annotation(@Autowire、@Qualifier)
    Spring自动装配
    servlet验证码
    Spring集合装配
    帐号明文传输漏洞
    java单元测试
    项目building workspace很慢,或者直接内存溢出的问题解决办法。
  • 原文地址:https://www.cnblogs.com/xiaxiaoxuan/p/3287247.html
Copyright © 2011-2022 走看看