最近用到了命令行,一点心得:

1、errorlevel返回的确实是上一条命令的返回值,但不同命令的表现完全不同。比如:

 dir
echo %errorlevel% //显示0
dir aldkalf // 不存在的文件名
echo %errorlevel% // 显示1 set /a test=0/0 // 除0错误
echo %errorlevel% // 显示1073750993
set test=lala // 正确!
echo %errorlevel% // 结果还是显示上面那个错误号
set /a test=10%%%2 // 换个求余的错误:找不到操作数
echo %errorlevel% // 显示10737500989,注意和上面那个错误码不同了!

dir的表现很符合直觉,但set只有在错误时才会去修改errorlevel,其他命令的表现也各有各的不同,使用时一定要亲自试试。

2、延迟赋值在for循环里尤其容易出问题。比如下面这段,我希望生成出错,就跳出循环:

 for %%i in (a.csproj, b.csproj) do (
msbuild %%i
if not %errorlevel% == 0 goto break
)

结果却是总是正确的,永远不会中途跳出循环。原因是cmd认为for是一条语句,只有在整个for循环执行完、并退出for之后,才会将最后一次msbuild的错误码赋给errorlevel。如果希望每次就能获取最新的errorlevel,应该如下:

 SetLocal EnableDelayedExpansion
for %%i in (a.csproj, b.csproj) do (
msbuild %%i
if not !errorlevel! == 0 goto break
)

cmd命令行中的errorlevel和延迟赋值的更多相关文章

  1. 如何在cmd命令行中查看、修改、删除与添加环境变量,语法格式例子:set path;echo %APPDATA%

    如何在cmd命令行中查看.修改.删除与添加环境变量 首先明确一点: 所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改.也就是说当关闭此cmd命令行窗口后,将不再起作用.永久性修 ...

  2. cmd命令行中无pip命令的解决办法

    cmd命令行中无pip命令的解决办法 只需简单的两步即可,按顺序执行以下命令(在cmd中): python -m ensurepip python -m pip install --upgrade p ...

  3. Windows 如何在cmd命令行中查看、修改、删除与添加环境变量

    转自:http://www.cnblogs.com/saptechnique/archive/2013/02/17/2914222.html 首先明确一点: 所有的在cmd命令行下对环境变量的修改只对 ...

  4. Windows如何在cmd命令行中查看、修改、删除与添加、设置环境变量

    首先明确一点: 所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改.也就是说当关闭此cmd命令行窗口后,将不再起作用.永久性修改环境变量的方法有两种:一种是直接修改注册表(此种方 ...

  5. Windows下的cmd命令行中设置环境编码

    我们都知道,Windows下的cmd命令行默认编码是Windows系统的编码,就是ANSI编码或者说是GBK编码的,这样我们编写的很多应用比如php编写utf-8编码的应用在命令行下面运行时都会出现乱 ...

  6. PLSQL在cmd命令行中的基本用法

    首先:set serveroutput on:设置打印 declareresult number;beginselect (sal*12)+nvl(comm,0) into result from e ...

  7. 复制windows CMD命令行中的内容

    标记文本后,按"回车",或鼠标"右键"为从CMD中复制文本. 在CMD中,按鼠标"右键",为在CMD中粘贴文本.

  8. Win7在CMD命令行中使用管理员权限运行命令

    使用命令: runas /user:administrator 需要执行的命令 如下:

  9. 如何在cmd命令行中运行Java程序

    cmd运行java 有萌新问我怎么用cmd运行Java,他运行报错了,怎么办?如图是他的执行过程: 他说就这一个类,里面包含了main方法怎么会没有加载主类呢. 其实很简单,因为你执行的时候并不能直接 ...

随机推荐

  1. STM32学习笔记(二) 基于STM32-GPIO的流水灯实现

    学会了如何新建一个工程模板,下面就要开始动手实践了.像c/c++中经典的入门代码"hello world"一样,流水灯作为最简单的硬件设备在单片机领域也是入门首推.如果你已经有了一 ...

  2. 数位dp——统计'1'的个数

    今天去牛客网看了看 包含一 这道题,一开始没看清,以为它要统计 1~n 所有数中数字 '1' 出现的总次数,也就是说,若 n == 11,则 ans = 4:而按照题目的原意 ans 应该为 3.看错 ...

  3. 转:不是技术牛人,如何拿到国内IT巨头的Offer

    转自:http://blog.csdn.net/lsldd/article/details/13506263 不久前,byvoid面阿里星计划的面试结果截图泄漏,引起无数IT屌丝的羡慕敬仰.看看这些牛 ...

  4. xmpp怎么让群主踢人?

    不知道其他语言版的xmpp,framework是怎样的,就OC版提供的xmpp框架来说,它只提供了邀请其他用户进群的API: - (void)inviteUser:(XMPPJID *)jid wit ...

  5. javascript的语句和函数

    1.for-in语句:是一种精准的迭代语句,可以用来枚举对象的属性. 2.label语句:在代码中添加标签,以便将来使用,由break和continue语句调用. 3.with语句:将代码的作用域设置 ...

  6. java 抽象类

    抽象类: 1)函数没有方法体,就必须用abstract修饰. 2)抽象函数所在的类必须也是抽象的. 3)非抽象的类继承于抽象类,必须实现其全部方法. 4)抽象类中可以存在抽象方法,也可以不存在. 5) ...

  7. Unity视频播放的各种实现方式汇总

    http://www.taidous.com/bbs/article-860-1.html  Unity视频播放有很多种实现方式,可根据要求来选择适当的实现,这里总结一下: 1. MovieTextu ...

  8. 20145218 《Java程序设计》第7周学习总结

    20145218 <Java程序设计>第7周学习总结 教材学习内容总结 第十二章 Lambda 如果使用JDK8的话,可以使用Lambda特性去除重复的信息. 在只有Lambda表达式的情 ...

  9. 鼠标经过导航中li时,一个彩色模块跟着鼠标移动

    1.鼠标经过导航中li时,一个活动的li跟随鼠标移动,最终移动到鼠标的停留的位置.(如需鼠标离开后让活动的li回到初始位置,则用jq hover事件,当鼠标离开时,给活动的li设置left是0) 2. ...

  10. python 练习 13

    #!/usr/bin/python # -*- coding: UTF-8 -*- l = [] for i in range(3): x = int(raw_input('integer:\n')) ...