0

我有一个基于用户输入运行 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 应用程序将所有输出打印到文件中,然后是成功消息,然后将文件写入控制台,因此存在控制台和文件副本。但是如果迁移失败,例如如果用户没有数据库的写权限,它就不能按预期工作。在这种情况下,结束消息期望文件已正确执行。有什么方法可以确定迁移器是否因错误退出?

我想显示:

  • 迁移代码
  • (如果失败)失败的错误信息
  • (else) 成功消息

编辑:我最初询问如何显示错误和一般输出 - 这是通过>> install_log.txt 2>&1代码实现的。现在我只需要弄清楚如何识别迁移时是否发生错误。

4

1 回答 1

0

我找到的解决方案如下:

"%~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
)
于 2014-11-12T00:38:38.367 回答