忽略Powershell中批处理文件中的一行?

时间:2019-02-25 22:11:31

标签: powershell batch-file

假设我有以下名为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由包装程序运行多次,因此每次成功运行时,它都会输出exit code 0

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是不可选项。

1 个答案:

答案 0 :(得分: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%