Все, я использую командный файл для автоматизации развертывания пакетов служб SSIS в MSDB.Я использую команду START /WAIT
в цикле FOR
, чтобы перебрать все файлы в папке и выполнить команду 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