如何检查 bat 文件中命令的输出是否为空?

如何检查 bat 文件中命令的输出是否为空?

我正在尝试自动执行一些 git 任务。

我需要检查此命令的输出以查看它是否为空:

git status --porcelain

在 Linux 中,我可以使用以下命令:

if [[ `git status --porcelain` ]]; then
    // I know it's not empty
fi

但是在CMD中我不知道如何检查它。

答案1

Batch 获取命令输出(逐行)的方法是for /f循环:

for /f "delims=" %%a in ('command') do echo %%a

但在您的情况下,它甚至更简单:执行命令并过滤输出。.findstr“任何字符”的通配符(findstr支持非常有限的 REGEX 子集)。

&&并且||是有条件执行的:&&意味着“仅当前一个命令成功时才执行以下命令”(findstr找到至少一个字符),||完全相反:“仅当前一个命令(!仍然是命令findstr,而不是条件echo!)失败(findstr没有找到一个字符)时才执行以下命令”

git status --porcelain |findstr . && echo output || echo emty.

如果您很幸运,git会得到一个errorlevel(一种“返回代码”),通常对于成功的命令为零,对于其他任何命令为非零。(像这样使用错误级别完全是程序员的选择 - 大多数人会这样做,有些人不会),您可以像这样使用它:

git status --porcelain
if errorlevel 1 (
   echo failed
) else (
   echo successful
)

相关内容