cmd命令行中的errorlevel和延迟赋值
最近用到了命令行,一点心得:
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和延迟赋值的更多相关文章
- 如何在cmd命令行中查看、修改、删除与添加环境变量,语法格式例子:set path;echo %APPDATA%
如何在cmd命令行中查看.修改.删除与添加环境变量 首先明确一点: 所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改.也就是说当关闭此cmd命令行窗口后,将不再起作用.永久性修 ...
- cmd命令行中无pip命令的解决办法
cmd命令行中无pip命令的解决办法 只需简单的两步即可,按顺序执行以下命令(在cmd中): python -m ensurepip python -m pip install --upgrade p ...
- Windows 如何在cmd命令行中查看、修改、删除与添加环境变量
转自:http://www.cnblogs.com/saptechnique/archive/2013/02/17/2914222.html 首先明确一点: 所有的在cmd命令行下对环境变量的修改只对 ...
- Windows如何在cmd命令行中查看、修改、删除与添加、设置环境变量
首先明确一点: 所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改.也就是说当关闭此cmd命令行窗口后,将不再起作用.永久性修改环境变量的方法有两种:一种是直接修改注册表(此种方 ...
- Windows下的cmd命令行中设置环境编码
我们都知道,Windows下的cmd命令行默认编码是Windows系统的编码,就是ANSI编码或者说是GBK编码的,这样我们编写的很多应用比如php编写utf-8编码的应用在命令行下面运行时都会出现乱 ...
- PLSQL在cmd命令行中的基本用法
首先:set serveroutput on:设置打印 declareresult number;beginselect (sal*12)+nvl(comm,0) into result from e ...
- 复制windows CMD命令行中的内容
标记文本后,按"回车",或鼠标"右键"为从CMD中复制文本. 在CMD中,按鼠标"右键",为在CMD中粘贴文本.
- Win7在CMD命令行中使用管理员权限运行命令
使用命令: runas /user:administrator 需要执行的命令 如下:
- 如何在cmd命令行中运行Java程序
cmd运行java 有萌新问我怎么用cmd运行Java,他运行报错了,怎么办?如图是他的执行过程: 他说就这一个类,里面包含了main方法怎么会没有加载主类呢. 其实很简单,因为你执行的时候并不能直接 ...
随机推荐
- UNC path
http://www.emailsignature.eu/phpBB2/how-to-get-a-unc-path-name-t341.html In a network, the Universal ...
- TortoiseSvn
TortoiseSVN 是svn版本控制系统的一个免费开源客户端,它是svn版本控制的 Windows 扩展.可以使你避免使用枯燥而且不方便的命令行.它完全嵌入 Windows Explorer,使用 ...
- git本地文件回滚操作
今天有几个文件改在了其他分支上.需要回滚. 参考了下面两篇文章: Link Link 简单讲,分多个不同的阶段: 1. 用git status命令看,发现是unstaged,那么就是只在work ...
- 转:C/C++基本数据类型所占字节数
参考:http://blog.csdn.net/vast_sea/article/details/8076934 关于这个基本的问题,很早以前就很清楚了,C标准中并没有具体给出规定那个基本类型应该是多 ...
- python模块以及导入出现ImportError: No module named 'xxx'问题
python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包.只要模块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用如果你要使 ...
- mysql优化(三)–explain分析sql语句执行效率
mysql优化(三)–explain分析sql语句执行效率 mushu 发布于 11个月前 (06-04) 分类:Mysql 阅读(651) 评论(0) Explain命令在解决数据库性能上是第一推荐 ...
- window下安装nodejs
下载nodejs 去https://nodejs.org/en/download/下载nodejs,有.mis(安装版)和.exe(二进制版) .mis(安装版) 一般下载这个就行,简单方便,自带np ...
- 解决PhoneGap不支持viewport的几种方法
前几天用phonegap编译GameBuilder+CanTK时,发现HTML里的viewport无效.CanTK根据devicePixelRatio检测设备的DPI,然后用viewport设置正确的 ...
- linux笔记:目录处理命令ls,mkdir,cd,pwd,rmdir,cp,mv,rm
linux命令的格式:命令 [-选项] [参数]例:ls -la /etc 命令:ls命令所在路径:/bin/ls功能:显示目录文件用法:ls [-aldh] []参数:-a 查看所有文件,包括隐藏文 ...
- 反编译工具reflector破解方法
文件下载:http://files.cnblogs.com/lori/Red.Gate.Reflector7.6.rar 破解方法: 1. 断网2. 运行.NET Reflector,点击Help - ...