2. Если в тексте есть слово degraded и нет rebuilding, выводить "-1" (именно с минусом)
CMD/BAT - [решено] Поиск по тексту в txt с "если"
Ну, вообще-то коды возврата должны описываться целым беззнаковым. -1 — это 0xFFFFFFFF, обычно резервируется для неопознанных ошибок или общих сбоев.
Цитата zegordo:
Iska, выглядит так, что ничего не изменилось
CMD/BAT - [решено] Поиск по тексту в txt с "если"
Возвращаясь к:
Цитата zegordo:
> -o : invalid object '-vd'
CMD/BAT - [решено] Поиск по тексту в txt с "если"
Там у Вас изначально не только ноль был вместо буквы o, но и ненужный дефис - перед vd. В справке утилиты, которую Вы выложили, описан правильный формат.
Я попробовал и вариант с echo и с командной строкой, и тот, и тот, как и ожидалось, работают. При использовании echo потребно использование exit для выхода из утилиты, при использовании командной строки, понятное дело, сие не требуется.
Вариант с echo
[spoiler]Код: [/spoiler]
Код: Выделить всё
@echo off
setlocal enableextensions enabledelayedexpansion
(
echo info -o vd
echo exit
) | c:\mvsetup.exe | find.exe /i "degraded" && (
(
echo info -o vd
echo exit
) | c:\mvsetup.exe | find.exe /i "rebuilding" && (
echo Status: Degraded and rebuilding
exit /b 1
) || (
echo Status: Degraded
exit /b 2
)
) || (
echo Status: Successfull
exit /b 0
)
endlocal
exit /b 0Вариант с командной строкой
[spoiler]Код: [/spoiler]
Код: Выделить всё
@echo off
setlocal enableextensions enabledelayedexpansion
c:\mvsetup.exe info -o vd | find.exe /i "degraded" && (
c:\mvsetup.exe info -o vd | find.exe /i "rebuilding" && (
echo Status: Degraded and rebuilding
exit /b 1
) || (
echo Status: Degraded
exit /b 2
)
) || (
echo Status: Successfull
exit /b 0
)
endlocal
exit /b 0P.S. И всё же утилита не совсем CLI, поскольку ошибки пишет не как положено — в stderr, а, похоже, напрямую в консоль
.