Iska
06-04-2018, 17:32
2. Если в тексте есть слово degraded и нет rebuilding, выводить "-1" (именно с минусом) »
Ну, вообще-то коды возврата должны описываться целым беззнаковым. -1 — это 0xFFFFFFFF, обычно резервируется для неопознанных ошибок или общих сбоев.
Iska, выглядит так, что ничего не изменилось »
Возвращаясь к:
> -o : invalid object '-vd' »
Там у Вас изначально не только ноль был вместо буквы o, но и ненужный дефис - перед vd. В справке утилиты, которую Вы выложили, описан правильный формат.
Я попробовал и вариант с echo и с командной строкой, и тот, и тот, как и ожидалось, работают. При использовании echo потребно использование exit для выхода из утилиты, при использовании командной строки, понятное дело, сие не требуется.
@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
@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 0
P.S. И всё же утилита не совсем CLI, поскольку ошибки пишет не как положено — в stderr, а, похоже, напрямую в консоль :).
Ну, вообще-то коды возврата должны описываться целым беззнаковым. -1 — это 0xFFFFFFFF, обычно резервируется для неопознанных ошибок или общих сбоев.
Iska, выглядит так, что ничего не изменилось »
Возвращаясь к:
> -o : invalid object '-vd' »
Там у Вас изначально не только ноль был вместо буквы o, но и ненужный дефис - перед vd. В справке утилиты, которую Вы выложили, описан правильный формат.
Я попробовал и вариант с echo и с командной строкой, и тот, и тот, как и ожидалось, работают. При использовании echo потребно использование exit для выхода из утилиты, при использовании командной строки, понятное дело, сие не требуется.
@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
@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 0
P.S. И всё же утилита не совсем CLI, поскольку ошибки пишет не как положено — в stderr, а, похоже, напрямую в консоль :).