标签: errorlevel

cmd.exe%errorlevel%9009的官方MS参考

所以我从经验中知道从cmd.exe运行有效程序并检查%errorlevel%将返回0:

C:\>dir logo.bmp
 Volume in drive C has no label.
 Volume Serial Number is 5283-A7A2

 Directory of C:\

05/22/2008  12:43 PM         1,440,054 logo.bmp
               1 File(s)      1,440,054 bytes
               0 Dir(s)  71,723,995,136 bytes free

C:\>echo %errorlevel%
0
Run Code Online (Sandbox Code Playgroud)

同样,尝试执行不存在的命令然后检查%errorcode%给了我9009:

C:\>idontexist.exe
'idontexist.exe' is not recognized as an internal or external command,
operable program or batch file.

C:\>echo %errorlevel%
9009
Run Code Online (Sandbox Code Playgroud)

我多年来一直在编写批处理脚本,他们一直都是这样做的.但是,有人提出了有关此技术的兼容性(向前和向后)的问题,我找不到Microsoft的任何官方文档,实际上在找不到文件或程序时将9009定义为错误级别.我最近的是这个网站(http://msdn.microsoft.com/en-us/library/ms681381(v=vs.85).aspx),不幸的是,它列出了9009作为DNS错误.

有谁知道微软记录这种行为的位置?

cmd batch-file errorlevel

14
推荐指数
1
解决办法
2万
查看次数

Powershell无法返回正确的退出代码

当使用-File命令行开关执行Powershell脚本(在2.0中)并在Param中显式定义输入参数时,退出代码始终为"0"(永不失败),而不是正确返回已定义或预期的错误代码.
使用显式参数定义和-Command开关时不会发生这种情况,但是出于无关的目的,我需要在脚本中保留-File开关.

任何有关解决方法的帮助(不涉及删除显式参数定义)都将非常有用.

Powershell"无法返回正确的退出代码":

exit1.ps1:调用显式定义参数的脚本.Errorlevel始终为0,即使脚本的某些部分无意中失败也是如此.

param(
    [Parameter(mandatory=$true)][string]$arg1,
    [Parameter(mandatory=$true)][string]$arg2,
    [Parameter(mandatory=$true)][string]$arg3
);
exit 1;
Run Code Online (Sandbox Code Playgroud)

输出:

C:\temp\testnant>powershell -noprofile -nologo -noninteractive -executionpolicy Bypass -file .\exit1.ps1 "one" "two" "three"

C:\temp\testnant>echo %errorlevel%
0
Run Code Online (Sandbox Code Playgroud)




现在,让我们在将param函数修改为不那么明确时尝试相同的事情:

Exit1LooseParam.ps1:

param(
    $arg1,
    $arg2,
    $arg3
);
exit 1;
Run Code Online (Sandbox Code Playgroud)

输出(带三个参数):

C:\temp\testnant>powershell -noprofile -nologo -noninteractive -executionpolicy Bypass -file .\Exit1looseParam.ps1 "one" "two" "three"

C:\temp\testnant>echo %errorlevel%
1
Run Code Online (Sandbox Code Playgroud)




看来,当你明确定义输入参数时,Powershell由于某种原因似乎"失去了它的思维"并且无法返回正确的退出代码.

有没有人有解决方法或能够解释为什么会这样?

parameters powershell exit-code parameter-passing errorlevel

12
推荐指数
1
解决办法
5881
查看次数

从plink获取返回代码?

在DOS批处理脚本中,我正在使用plink在远程(也是Windows)计算机上运行单个命令.以前,此命令仅在本地计算机上运行,​​并依赖返回代码来确定成功.有没有办法通过plink轻松获取此信息?

scripting plink batch-file errorlevel

10
推荐指数
1
解决办法
1万
查看次数

如何在Jenkins中将脚本的某些返回值"映射"为"黄色"状态?

在Jenkins中,有可能创建可以包含脚本执行的免费项目.当脚本的返回级别不为0时,构建失败(变为红色).

是否有可能使其"黄色"?
(黄色通常表示成功构建失败的测试)

该系统在Linux上运行.

errorlevel jenkins

9
推荐指数
1
解决办法
2533
查看次数

cmd msbuild errorlevel始终为0

我在build.bat文件中有这个代码

for /R %~dp0 %%A In (*.sln) do (
c:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe %%A /t:rebuild /nologo /verbosity:minimal /flp:Verbosity=detailed;LogFile=%~dp0\Logs.txt;append=true /m /p:Configuration=Debug;Platform="Any CPU" /p:VisualStudioVersion="12.0"
if not %errorlevel%==0 set Failed+=1
pause)
Run Code Online (Sandbox Code Playgroud)

我的问题是%errorlevel%总是0,即使日志文件有错误和警告.

msbuild cmd errorlevel

9
推荐指数
2
解决办法
1479
查看次数

findstr退出代码/ errorlevel

我有一个正在使用的程序,findstr当找到字符串时errorlevel返回0,当找不到字符串时errorlevel返回1.好吧,我可以解决这个问题.

问题出在哪里,我找不到任何关于每个errorlevel方法的官方文件findstr.我需要知道,如果别的了findstr所能返回errorlevel1,或者如果它只返回1时找不到字符串.

如果有"官方"文档的链接是首选,但任何输入都将非常感谢.

提前致谢!

cmd exit-code errorlevel findstr

9
推荐指数
1
解决办法
2万
查看次数

批处理编程从失败的FIND命令设置ERRORLEVEL

我发现需要向调用批处理脚本的程序报告错误级别.

该脚本将创建一个CSV日志文件,我想检查以显示脚本是否成功运行.

我想说的是类似的东西

IF NOT FIND "[ERR" "test.csv"
Run Code Online (Sandbox Code Playgroud)

或者说,如果字符串"[ERR"不在输出中ERRORLEVEL = 0 ELSE ERRORLEVEL = 1

希望这是有道理的.我确信它很简单,但设置错误级别似乎是一个皇家的痛苦!

error-handling batch-file errorlevel

8
推荐指数
1
解决办法
3万
查看次数

如何从PowerShell获取错误代码(ErrorLevel)到Windows命令提示符?

我试图通过Windows命令提示符启动PowerShell命令将文本替换为文件.问题是,即使我的PowerShell命令不起作用,我总是得到ErrorLevel = 0.我的问题是当我启动PowerShell时如何将错误代码导入ErrorLevel cmd?请注意,我想通过Windows命令提示符进行此操作,而不是通过创建脚本部件.

这是我所说的一个例子.打印屏幕中的错误是通过选择一个非现有文件有意识地显示的,即使出现错误,ErrorLevel也等于0.

我使用的命令是下面的(我试过$LastExitCode$ExitCode):

powershell -NonInteractive -NoProfile -Command "(Get-Content HvsvmAppserver.ref) -replace '-Dfr.base0.role=', '-Dfr.base0.role=USR_ROLE'| Set-Content -encoding ASCII HvsJvmAppserver.ref; exit $LastExitCode"
Run Code Online (Sandbox Code Playgroud)

但我也尝试过同样的:

powershell -NonInteractive -NoProfile -Command "(Get-Content HvsvmAppserver.ref) -replace '-Dfr.base0.role=', '-Dfr.base0.role=USR_ROLE'| Set-Content -encoding ASCII HvsJvmAppserver.ref; exit $ExitCode"
Run Code Online (Sandbox Code Playgroud)

根据majkinetor的评论,我尝试了以下内容并且也没有工作:(即使在PowerShell中发生错误,我仍然在Dos中获得ErrorLevel 0.

powershell -noprofile -command " try { (Get-Content HvsvmAppserver.ref) -replace '-Dfr.base0.role=', '-Dfr.base0.role=USR_ROLE'| Set-Content -encoding ASCII HvsJvmAppserver.ref } catch {exit $LastExitCode}"
Run Code Online (Sandbox Code Playgroud)

您可以清楚地看到与文件名不存在的错误,但错误级别始终为0.

我想要的是为执行PowerShell命令时发生的每个错误获取除0之外的错误代码.

根据我读到的一些评论,我想说:我想通过PowerShell和Dos命令来实现,而不是采用不同的方式.我不想制作自己的错误代码或个性化的错误管理!我想要的是当我的powershell(代码,脚本等)发生错误时,Dos的错误级别得到这个错误代码(我不想自己编写代码).有答案的人会受到欢迎并感谢他们,但是这些人只是通过要求改变我想要的东西或者删除照片等来评论无益评论...请不要发表评论,除了提供一个帮助和回答我的问题不是通过提出别的东西,我要求帮助一些特定的东西,请不要将主题改为别的东西..这个网站的想法是提供帮助,而不是添加无用的和无益的评论.

错误2

windows powershell cmd errorlevel

8
推荐指数
1
解决办法
9341
查看次数

检测文件是否在批处理文件中打开

假设我有一个用于执行长版本的批处理文件,最后它创建了一个EXE.如果我在开始构建之前忘记关闭应用程序,则链接阶段会在无法重新创建EXE时失败.

我想检查EXE是否在构建开始时打开.我尝试将EXE文件重命名为自身,但是虽然这给出了拒绝访问错误,但重命名命令(作为内部命令)不会设置%ErrorLevel%.

检查将%ErrorLevel%设置为非零值的打开文件的非破坏性方法是什么?

windows cmd rename batch-file errorlevel

7
推荐指数
1
解决办法
7647
查看次数

Powershell是否忘记在解析器错误上设置ERRORLEVEL?

在命令提示符中,试试这个:

powershell aaa

echo ErrorLevel是%errorlevel%

Powershell将失败(出错).您还会看到" ErrorLevel为1 ".这是因为它将aaa作为脚本运行,这会产生未处理的错误,从而设置errorlevel.

但是,现在试试这个:

电源外壳 '

echo ErrorLevel是%errorlevel%

Powershell将失败(出错).这次,您还会看到" ErrorLevel为0 ".

我意识到这是一个不同的问题.Powershell甚至会说它是一个ParserError,这是因为我搞砸了命令行参数.不过,这并不酷.

我不清楚它为什么会这样.我猜这是一个疏忽.其他程序忽略了对失败设置错误级别,但在这种情况下,就好像它们中途走了一样.它甚至在这里设置为0,而不是根本不设置它.

windows powershell batch-file errorlevel

7
推荐指数
1
解决办法
955
查看次数