0
在下面的腳本中,我想捕獲release.bat的exitcode以便svn在成功時提交。問題是提交是在release.bat(這是我公司的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 }
}
「問題在於提交是在release.bat結束之前完成的 - 」在事實之後,您無法影響已經發生的操作。 –
我不知道我是否把它正確,因爲你可以看到在代碼中我想要在批處理腳本競爭後提交更改,而不是在發生腳本啓動後提交更改等待結束。 – Vangelis
你的意思是'release.bat'在後臺異步運行某些東西? –