【问题标题】:Ignore a line in batch file from powershell?从powershell忽略批处理文件中的一行?
【发布时间】:2019-02-25 22:11:31
【问题描述】:

假设我有以下批处理文件,名为openPS.bat

@echo off

SET psFile="%1"

Powershell.exe -ExecutionPolicy ByPass -File %psFile% %2 %3 %4 %5

if %errorlevel% NEQ 0 GOTO :error
GOTO :end
:error
echo Exit Code: %ERRORLEVEL%
echo Failed!

EXIT /B %ErrorLevel%
:end
echo Exit Code: %ERRORLEVEL%
echo Success!

此批处理文件用于在 CMD 控制台中运行 powershell 脚本:

C:> openPS.bat script.ps1

script.ps1被一个wrapper多次运行,所以每次运行成功,都会输出exit code 0

我可以通过 powershell 以某种方式忽略 openPS.bat 中的这一行吗?

EXIT /B %ErrorLevel%
:end
echo Exit Code: %ERRORLEVEL%
echo Success!

我知道我可以REM 它但我需要在 script.ps1 的所有循环完成后输出一条成功消息。所以它必须保留,我发现没有办法抑制所有这些退出代码 0。如果我在 powershell 脚本中使用out-null,我会丢失所有其他输出,所以out-null 不是一个选项。

【问题讨论】:

  • 你打算如何处理错误(退出代码 0)?
  • @AnsgarWiechers 这就是为什么 out-null 对我不起作用,因为它会忽略错误。我看到的唯一选择是以某种方式直接从批处理文件中忽略该成功行

标签: powershell batch-file


【解决方案1】:

而不是检查并显示“成功!”对于每次迭代,使用包装脚本来指示完成。屏幕将仅显示失败和完成消息。

您还可以在包装脚本中使用一个变量来跟踪返回值,一个简单的求和就可以了,并在所有迭代执行完成后测试它的0。然后显示成功或失败。

@echo off

SET psFile="%1"

Powershell.exe -ExecutionPolicy ByPass -File %psFile% %2 %3 %4 %5

if %errorlevel% NEQ 0 GOTO :error
GOTO :end
:error
echo Exit Code: %errorlevel%
echo Failed!

:end
EXIT /B %errorlevel%

【讨论】:

  • 现在我觉得可以了……没必要说明成功,只要有错误码调回(0或1)
猜你喜欢
  • 2020-11-05
  • 1970-01-01
  • 2021-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多