2015-11-20 5 views
1

Я пытаюсь получить код exitcode/errorlevel из файла bat в сценарий powershell, вызывая файл bat.

Althought в% ErrorLevel% составляет 1:

BAT файл

call aCONFIGURATION 
for %%f in (.\createData\*.g.sql) do sqlcmd -b -U %UserName% -P %Password% -S %sqlClonedServer% -d %sqlClonedDatabaseName% -i %%f -r1 1> NUL 
echo %ERRORLEVEL% 

Когда я в powershellscript

$ lastexitcode его всегда 0, но% ErrorLevel% говорит 1

$build = "c:\my.bat" 
$state = & $build 
Write-Host $LASTEXITCODE 

Я тяну свое волосы этого дерьма powershell полны с ошибками.

Я прочитал эти ссылки, но они не помогают, как результат отличается:

Как я могу исправить $ lastexitcode

+0

Вы только reask тот же вопрос снова более или менее .... Если вы не согласны с завершением причина, по которой вы уже сделали то, что вам нужно. Вы можете отредактировать вопрос, чтобы объяснить, почему он не дублируется. – Matt

+0

Старый вопрос удаляется не потому, что его дубликат, а потому, что он больше не нужен. Новый вопрос идет дальше с информацией, которую я могу представить. – Elisabeth

ответ

1

echo %ERRORLEVEL% просто напишите s код ошибки для stdout, после чего пакетный файл выходит нормально.

Если вы хотите, чтобы командный сценарий на самом деле возврата об ошибке на выходе, используйте exit /b [exitcode]:

call aCONFIGURATION 
for %%f in (.\createData\*.g.sql) do sqlcmd -b -U %UserName% -P %Password% -S %sqlClonedServer% -d %sqlClonedDatabaseName% -i %%f -r1 1> NUL 
exit /b %ERRORLEVEL% 
+0

Ты мой герой! Это дало мне 0 для suceess и 1 или -1040304, когда скрипт никак не сработал. Спасибо Матиасу. – Elisabeth

+0

Можно ли использовать exit/b% ERRORLEVEL% ONE, хотя, когда у меня есть несколько вызовов sqlcmd? – Elisabeth

+0

Ну, '% ERRORLEVEL%' будет содержать только код выхода последнего * вызова (как '$ LASTEXITCODE'). Является ли это «нормально» на 100% зависит от вашего варианта использования и требований :) –

 Смежные вопросы

  • Нет связанных вопросов^_^