2016-05-02 8 views
0

スクリプトの下で、私が成功した場合にsvnをコミットするためにrelease.batの終了コードを取得します。問題は、コミットがrelease.bat(companysのvb6クライアント側のビルドバッチ)の終わりより前に行われることです。私は手順を寝ろうとしたが、私は悪いプログラミングだと思うし、スクリプトの期間は常に同じではありません。実際のexitcodeをスクリプトからキャッチするソリューションはありますか?Powershellでバッチファイルの終了コードを取り込みます

$strRevisionNumber1 = [string]$null 
$timestamp = get-date -f "yyyy-M-d-h-m-s" 
$SvnLogPath= Get-Location 
$logfile = "${SvnLogPath}svn_dotnet_update_${timestamp}.log" 
new-item -type file $logfile | out-null 
$lcllogfile = "C:\Users\dimser.DEVELVM\Desktop\BuildAutomationTrunks\dotnet\build\logs.xml" 
$dotnettrnk = "C:\Users\dimser.DEVELVM\Desktop\BuildAutomationTrunks\dotnet" 
$build = "C:\Users\dimser.DEVELVM\Desktop\BuildAutomationTrunks\dotnet\build\release.bat" 

######################################################################################################################### 
            ##############SCRIPT############## 
# ISSUING SVN UPDATE TO EACH DIR" 
$dotnettrnk | % {svn update $_ 2>&1 | ft -AutoSize -Wrap | Out-File -Append $logfile } 

#SVN UPDATE VERSION TARGETS 
Invoke-Expression "C:\Users\dimser.DEVELVM\Desktop\Scripts\reviseRevNumber.ps1" 


# ISSUING SVN LOGS TO LOGS.XML 
$dotnettrnk |% {svn log -l 1 -v --xml $_ 2>&1 | ft -AutoSize -Wrap | Out-File $lcllogfile } 

# OPEN LOG FILE AFTER THE COMPLETION 
notepad $logfile 
notepad $lcllogfile 
[xml]$xml = (get-content $lcllogfile) 

#STORES THE REVISION NUMBER FOR THE COMMIT 
$strRevisionNumber1 = $xml.log.logentry.revision 
Write-Host $strRevisionNumber1 

$LASTEXITCODE = 1 
#CALL THE BUILD SCRIPT 
cmd /c $build 
Write-host $LASTEXITCODE 


#CHECK IF BUILD WAS SUCCESSFUL 
if($LASTEXITCODE -eq 0) 
{ 
# ISSUING SVN COMMIT 
$dotnettrnk | % {svn commit -m "Build: revision: $strRevisionNumber1" $_ 2>&1 | ft -AutoSize -Wrap | Out-File -Append $logfile } 
} 
+0

"問題は、コミットがrelease.batの終わりより前に行われていることです。" - 事後にすでに実行されたアクションには影響しません。 –

+0

バッチスクリプトの競合後に変更をコミットするコードで見ることができるように、正しく挿入したかどうかわかりませんが、スクリプトの開始後に変更をコミットするのではなく終了を待っている。 – Vangelis

+0

'release.bat'はバックグラウンドで何かを非同期で実行していますか? –

答えて

0

cmd /c $buildの代わりにStart-Process $build -Waitを試してください。

関連する問題