我正在尝试自动执行一些 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
)