пакетный файл, если ошибка оператора - PullRequest
0 голосов
/ 09 декабря 2011

Как мне сделать это в пакетном файле .bat:

 if ("c:\program files\visualsvn server\bin\svnlook.exe" log -r2 d:\repositories\myrepo | findstr "~~DEPLOY~~" )
    (
     #dosomething
    )
    else
    (
     #dosomethingelse
    )

теперь я получаю сообщение об ошибке В это время журнал был неожиданным.

Ответы [ 3 ]

2 голосов
/ 09 декабря 2011

Используйте && и || условно выполнять команды в зависимости от успеха или неудачи предыдущей команды

"c:\program files\visualsvn server\bin\svnlook.exe" log -r2 d:\repositories\myrepo | findstr "~~DEPLOY~~" >nul && (
  #do_Something_If_Success
) || (
  #do_Something_Else_If_Failure
)
1 голос
/ 09 декабря 2011

Ответ dbenham соберет IF-THEN-ELSE, который является одновременно продвинутым и загадочным.Один кикучиё неоправданно сложен.

Это средняя точка между предыдущими двумя:

"c:\program files\visualsvn server\bin\svnlook.exe" log -r2 d:\repositories\myrepo | findstr "~~DEPLOY~~" >nul
if errorlevel 1 (
    echo Deploy not found
) else (
    echo Deploy found
)
1 голос
/ 09 декабря 2011

Попробуйте вместо этого:

setlocal enabledelayedexpansion
set found_deploy=0
for /f 'eol=; tokens=1 delims=' %%c in ('"c:\program files\visualsvnserver\bin\svnlook.exe" log -r2 d:\repositories\myrepo ^| findstr "~~DEPLOY~~"') do (
    set found_deploy=1
)

if "!found_deploy!"=="1" (
    @REM::do_something_based_on_finding_deploy
) else (
    @REM::do_something_based_on_not_finding_deploy
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...