gpt4 book ai didi

windows - 捕获命令的输出并检查批处理脚本中的错误级别

转载 作者:可可西里 更新时间:2023-11-01 10:35:43 26 4
gpt4 key购买 nike

我有一个命令(让我们称它为 command)打印到标准输出,并且还会根据执行的成功或失败设置 ERRORLEVEL。我想从将处理 command 输出的批处理脚本中调用 command,但前提是 command 以 0 的 ERRORLEVEL 退出(即成功)。这最好不需要临时文件或检查命令的输出来推断它是否成功。

我能够使用 for 语句捕获命令的输出,但是在执行此操作时我无法检查 ERRORLEVEL。我试过类似的东西:

for /F %%A in ('command') do (
REM The following check does not seem to work
if ERRORLEVEL 1 goto error
REM otherwise, do stuff with %%A
)

我也尝试过使用 %errorlevel%!errorlevel!(使用 setlocal enabledelayedexpansion),但都没有用。

最佳答案

使用如下代码:

@echo off
"command.exe">"%TEMP%\CommandOutput.tmp"
if errorlevel 1 goto Failed

for /F "usebackq" %%A in ("%TEMP%\CommandOutput.tmp") do (
REM Do stuff with %%A
echo %%A
)
goto DelTempFile

:Failed
echo There was an error on executing command.

:DelTempFile
if exist "%TEMP%\CommandOutput.tmp" del "%TEMP%\CommandOutput.tmp"

此批处理代码首先运行命令,将标准输出重定向到临时文件文件夹中的文件。接下来它评估命令的退出代码。

如果没有错误,输出将使用 for 进行处理。

出现错误时会显示相应的错误消息。

最后,在批处理终止之前,包含捕获输出的临时文件被删除。

关于windows - 捕获命令的输出并检查批处理脚本中的错误级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28036609/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com