windows – FOR / F命令循环中的ERRORLEVEL返回意外结果
发布时间:2020-12-14 01:38:12 所属栏目:Windows 来源:网络整理
导读:我正在尝试记录net stop的输出,同时还捕获其ERRORLEVEL. 基于this question,我在嵌套子例程中尝试了以下内容: set /a loopIndex=0for /F "usebackq delims=" %%i in (`net stop %SERVICE_NAME%`) do ( if !loopIndex! EQU 0 if !errorlevel! EQU 1 set stat
我正在尝试记录net stop的输出,同时还捕获其ERRORLEVEL.
基于this question,我在嵌套子例程中尝试了以下内容: set /a loopIndex=0 for /F "usebackq delims=" %%i in (`net stop %SERVICE_NAME%`) do ( if !loopIndex! EQU 0 if !errorlevel! EQU 1 set statementError=1 set /a loopIndex+=1 call :logMessage "%%i" ) echo statementError: %statementError% 但是,这不起作用,即使在净停止成功时也会抛出1. 这可能没有临时文件吗?如果没有,临时文件解决方案会是什么样子? 解决方法
虽然@ dbenham的
answer适用于%ERRORLEVEL%返回二进制值的情况,但我无法确认或否认返回的net stop退出代码实际上是二进制的,因此选择了n-ary解决方案.
按照@ dbenham的说法 FOR /F "delims=" %%i IN ('net stop MyService 2^>^&1 ^& CALL ECHO %%^^ERRORLEVEL%%^>error.level') DO ( CALL :logMessage "%%i" ) FOR /F "delims=" %%i IN (error.level) DO (SET /A statementError=%%i) DEL error.level IF %statementError% NEQ 0 () 分解语句解析: net stop MyService 2^>^&1 ^& CALL ECHO %%^^ERRORLEVEL%%^>error.level net stop MyService 2>&1 & CALL ECHO %^ERRORLEVEL%>error.level echo %ERRORLEVEL%>error.level 这里,CALL专门用于延迟解析%ERRORLEVEL%直到执行ECHO. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Windows 10后卫离线扫描日志/结果在哪里?
- Windows Vista 64位的命令行subversion客户端
- windows-server-2003 – 如何诊断无法在Windows Server 200
- WIN2000?SERVER安全配置服务器手册?(6)
- windows-server-2003 – 免费的Windows服务器防病毒和防火墙
- leetcode-hard-array-76. Minimum Window Substring -NO
- windows – NTFS元数据中包含哪些信息?
- window下使用SetUnhandledExceptionFilter捕获让程序的崩溃
- windows – 将硬盘驱动器从一个VMWare ESX Guest移动到另一
- 如何从Windows QML应用程序中删除边框
推荐文章
站长推荐
- windows-scheduler – 将参数传递给windows计划任
- Windows API一日一练 24 DrawText函数
- Windows Phone 8.1 Store VS Windows Phone 8.1
- windows – 在没有用户登录的情况下初始化AD帐户
- windows-xp – 在Windows XP上安装Windows 7启动
- 在wix中注册com dll
- windows – 如何使批处理文件执行reg文件
- windows-server-2008-r2 – 如何从Powershell的H
- Windows Server 2008安装SQL Server 2008
- 在Windows上的Scala代码中运行shell命令似乎需要
热点阅读