当前位置: 首页 > news >正文

cmd命令行中的errorlevel和延迟赋值

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

 

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

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

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

 

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

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

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

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

 

转载于:https://www.cnblogs.com/AlexanderYao/p/3552678.html

相关文章:

  • 我的项目经理2
  • iOS 开发小常识 开发笔记
  • 程序员修炼之道(一)
  • DevExpress.XtraEditors.TextEdit 设为密码输入框
  • 层次遍历二叉树(编程之美3.10)
  • 算法起步之Prim算法
  • 我比谁都相信努力奋斗的意义
  • jsp页面中从forEach里向action里面传递其中的一个对象
  • CentOS版本选择说明
  • 读书笔记——《设计心理学2:如何管理复杂》教你应付复杂
  • 用户故事(User Story)
  • TQ2440开发板移植UBOOT-2010.06总结(3)
  • ext button 属性
  • IE,URL中文读取
  • python进阶一_简介,安装与环境部署
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • Effective Java 笔记(一)
  • JavaScript HTML DOM
  • Linux Process Manage
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • Vue学习第二天
  • webpack+react项目初体验——记录我的webpack环境配置
  • Web标准制定过程
  • 关于字符编码你应该知道的事情
  • 理清楚Vue的结构
  • 前端学习笔记之观察者模式
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 微信小程序设置上一页数据
  • 硬币翻转问题,区间操作
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • (3)STL算法之搜索
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (循环依赖问题)学习spring的第九天
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)可以带来幸福的一本书
  • (转)一些感悟
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • :=
  • ??在JSP中,java和JavaScript如何交互?
  • @JsonFormat与@DateTimeFormat注解的使用
  • [52PJ] Java面向对象笔记(转自52 1510988116)
  • [ai笔记9] openAI Sora技术文档引用文献汇总
  • [cocos2d-x]关于CC_CALLBACK
  • [iOS开发]事件处理与响应者链
  • [JavaScript]如何讓IE9, IE8, IE7, IE6關閉視窗時不彈出對話訊息
  • [linux time命令学习篇] time 统计命令执行的时间
  • [Linux] 进程间通信基础
  • [linux]--关于进程概念(上)
  • [MySQL复制异常]Cannot execute statement: impossible to write to binary log since statement is in row for
  • [NOIP2014普及组]子矩阵
  • [Nuget]使用Nuget管理工具包
  • [RK3568 Android11] Input UI 使用流程
  • [Step By Step]SAP HANA中创建层次分析视图(Hierarchy Analytic View)