Возврат сообщения об ошибке из команды START / WAIT, вызывающей DTUTIL - PullRequest
0 голосов
/ 23 февраля 2012

Все, я использую командный файл для автоматизации развертывания пакетов служб 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

1 Ответ

1 голос
/ 23 февраля 2012

Самое простое - сбросить старт и просто запустить Dtutil (так как вы ждете, пока он не закончится, я не вижу разницы). Еще две возможности

start /B dtutil >result.txt

или

start cmd /c dtutil ^>result.txt

(^ используется для экранирования специальных символов, здесь символ перенаправления>) (и вы уже используете его ...)

Перенаправить stderr будет 2>result.txt, и stdout и strerr >result.txt 2>&1 (экранируется, если используется с cmd / c: ^>result.txt 2^>^&1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...