powershell - PowerShell错误处理: how to resolve if error occurs in first or middle of the script?

标签 powershell batch-file error-handling

我在PowerShell中调用了一个bat文件,并在PowerShell中给出了一个条件,如果失败,它将显示一条消息“失败”,如果通过则它将显示一条消息“通过”。我的bat文件包含单元测试用例,因此如果所有测试用例都通过了,我在Powershell中获得了一条消息“通过”,并且如果所有测试用例都失败了,或者在bat文件中最后一个测试用例都失败了,我得到了一条消息“失败”,但是如果我的第一个通过,我没有得到显示消息“失败”测试因此,如果第一个测试“失败”,第二个测试“通过”,而不是获取失败消息,那么我正在获取通过消息。我使用了条件$ LASTEXITCODE,它将给出测试(通过/失败)状态的最后状态。有什么办法可以解决这个问题,这将非常有用。
demo.bat

@echo off
echo "running  test cases"
call npm run test folder1/file1/validate.test.js
call npm run test folder1/file2/validate.test.js
test.ps1
Write-Output "starting script......"
        .\demo.bat
    if ($LASTEXITCODE -gt 0) { 
        Write-Output "Failed"
    }
    else {    
        Write-Output "Passed"
    } 

最佳答案

以下代码段应返回失败的部分测试的计数:

@echo off
set "scriptError=0" 
echo "running  test cases"
call npm run test folder1/file1/validate.test.js
if errorlevel 1 set /a scriptError+=1
call npm run test folder1/file2/validate.test.js
if errorlevel 1 set /a scriptError+=1
exit /B %scriptError%
但是,您可以将scriptError变量构造为二进制文件,以便它显示哪个部分测试失败了并且不仅计数……(提示:如果第一个测试失败,则添加1;为第二个测试添加2;为第三个测试添加4;…如果为第一个测试,则添加2^(n-1)第n次测试失败。)

关于powershell - PowerShell错误处理: how to resolve if error occurs in first or middle of the script?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62738274/

相关文章:

powershell - [Environment]::SetEnvironmentVariable 未永久设置

windows - 如何从 Bash for Windows 10 运行 .bat 或 .cmd 文件

windows - 将文本文件的内容读入环境变量

angular - 在处理组件中的nativeElement.setAttribute的函数中升级到Angular6后出现TypeError

java - Gson 的 SharedPreferences 无法正常工作

javascript - 如何为 JSON 创建错误处理函数

powershell - 批量隐藏Invoke-WebRequest

windows -/ChainingPackage 做什么?

powershell - 禁用 Powershell DSC 的 Azure VMSS TLS 1.0 无法下载脚本

Java MySQL 准备语句批处理