Получение вывода Migrate.exe в пакетном файле

У меня есть пакетный файл, который запускает миграцию FluentMigrator на основе пользовательского ввода. Последний шаг — запустить миграционную программу, как показано ниже:

"%~dp0\FluentMigrator.1.1.2.1\tools\Migrate.exe" /conn "DATA SOURCE=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=%HostName%)(PORT=%ServerPort%))(CONNECT_DATA=(SERVICE_NAME=%ServiceName%)));PASSWORD=%installerUserPW%;PERSIST SECURITY INFO=True;USER ID=%installerUserName%;" /provider oracle /context %installerUserName% /assembly ./bin/Debug/DatabaseMigrations.dll  >> install_log.txt

ECHO.
echo ------------------------------------------------------------------------------->> install_log.txt
echo ------------------ Database Setup has executed successfully ------------------ >> install_log.txt
echo ------------------------------------------------------------------------------->> install_log.txt
TYPE install_log.txt
GOTO:EOF

Это работает так, как требуется: приложение Migrate.exe выводит все выходные данные в файл, затем сообщение об успешном выполнении, затем файл записывается на консоль, поэтому есть консоль и копия файла. Но если миграция не удалась, например, если у пользователя нет прав на запись в базу данных, она не работает должным образом. В этом случае сообщение о завершении предполагает, что файл был выполнен правильно. Есть ли способ определить, завершился ли миграцион с ошибкой?

Я хотел бы отобразить:

  • Код миграции
  • (В случае сбоя) Сообщение об ошибке при сбое
  • (иначе) Сообщение об успехе

РЕДАКТИРОВАТЬ: я изначально спрашивал, как отображать как ошибку, так и общий вывод - это было достигнуто с помощью кода >> install_log.txt 2>&1. Теперь мне просто нужно выяснить, как определить, произошла ли ошибка при миграции.


person Irish Yobbo    schedule 04.11.2014    source источник


Ответы (1)


Решение, которое я нашел, выглядит следующим образом:

"%~dp0\FluentMigrator.1.1.2.1\tools\Migrate.exe" /conn "DATA SOURCE=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=%HostName%)(PORT=%ServerPort%))(CONNECT_DATA=(SERVICE_NAME=%ServiceName%)));PASSWORD=%installerUserPW%;PERSIST SECURITY INFO=True;USER ID=%installerUserName%;" /provider oracle /context %installerUserName% /assembly ./bin/Debug/DatabaseMigrations.dll  >> migrate_log.txt 2>> migrateerror_log.txt
if exist migrate_log.txt (
        if exist migrateerror_log.txt (
        TYPE migrateerror_log.txt >> install_log.txt
        echo ------------------------------------------------------------------------------->> install_log.txt
        echo -------------------------- Database Setup has failed ------------------------- >> install_log.txt
        echo ------------------------------------------------------------------------------->> install_log.txt
    ) else (
        echo ------------------------------------------------------------------------------->> install_log.txt
        echo ----------------- Database Setup has completed successfully ------------------ >> install_log.txt
        echo ------------------------------------------------------------------------------->> install_log.txt
    )
) else (
    echo ------------------------------------------------------------------------------->> install_log.txt
    echo ------------- An unexpected error has occurred in FluentMigrator ------------- >> install_log.txt
    echo ------------------------------------------------------------------------------->> install_log.txt
)
person Irish Yobbo    schedule 12.11.2014