全部, 我正在使用批處理文件來自動將SSIS包部署到MSDB。我在FOR
循環中使用START /WAIT
命令遍歷文件夾中的所有文件並執行DTUTIL
命令。從START/WAIT命令調用DTUTIL返回錯誤消息
雖然我知道我可以返回%ERRORLEVEL%
並在主批處理中使用它,但我輸的是DTUTIL
輸出的特定錯誤消息。
我想能夠捕獲該消息的輸出,但我還沒有找到辦法。我嘗試使用&&
,||
和&
級聯命令來鏈接命令。我也嘗試使用>
和2>
將輸出放入文件中。沒有任何東西給我想要的結果。
而具體而言,我主要關心DTUTIL
錯誤和消息比單獨的錯誤代碼更相關。
任何幫助或建議,將不勝感激。下面的代碼:
@echo off
SET /P SOURCEFOLDER=Enter the Source Folder where the Packages are located:
SET /P DESTSERVER=Enter the Destination Server:
SET /P DESTLOCATION=Enter Destination Folder (Leave blank for root):
IF NOT EXIST "%SOURCEFOLDER%\*.dtsx" GOTO NOFILES
FOR /F "usebackq delims==" %%i in (`dir /b "%SOURCEFOLDER%\*.dtsx"`) do (
ECHO.
ECHO ^>^>^>^>^>^> Copying %%i to %DESTSERVER%\MSDB\%DESTLOCATION% ^<^<^<^<^<^<^<
ECHO.
START /WAIT dtutil /FILE "%SOURCEFOLDER%\%%i" /DESTSERVER %DESTSERVER% /COPY SQL;"%DESTLOCATION%\%%~ni" /QUIET
ECHO %ERRORLEVEL%
ECHO.
)
GOTO COMPLETE
:NOFILES
ECHO.
ECHO *** No SSIS Packages were found. Please verify the folder location:
ECHO %SOURCEFOLDER%
ECHO.
GOTO END
:COMPLETE
ECHO.
ECHO All Packages have been Processed.
ECHO Please verify that no Error Messages or Warnings were returned.
ECHO.
GOTO END
:END
PAUSE
任何具有完整源代碼示例的最終解決方案都可以解決這個問題嗎? – Kiquenet 2013-07-26 10:10:09
@Kiquenet我把工作代碼放在GitHub上https://github.com/thevinnie/SSISDeploymentUtility – Vinnie 2013-07-29 12:26:14