Excel
Âëîæåíèé: 1
Ñóòü:
ñêðèïò ÷àñòü ëîãîâ îòïèñûâàåò â åêñåëü.
âñå îòðàáàòûâàåò êîððåêòíî, íî â äèñïåò÷åðå çàäà÷ âñåãäà âèñèò îäèí ïðîöåññ EXCEL.EXE, êîòîðûé íå óõîäèò äîæå ïîñëå çàêðûòèÿ ñêðèïòà.
Âîïðîñ:
Êàêèì îáðàçîì êîððåêòíî ýòî èñïðàâèòü. íàïðÿãàåò :)
ñàì ñêðèïò
Êîä:
# Ðàçðåøàåì âûïîëíåíèå ñêðèïòà
Set-ExecutionPolicy remotesigned
#-->Îïèñûâàåì âñå ïåðåìåííûå áëîêà
# ïóòè:
$PathPrefix = "D:\test"
#$PathPrefix = "\\serv\Otdely\ZUR\ÃÊÍ" # ïîâòîðÿþùèéñÿ ýëåìåíò ïóòè
$PathIn = "$PathPrefix" # êàòàëîã, îòêóäà áðàòü ZIP ôàéëû
$PathOut = "$PathPrefix" # êàòàëîã, êóäà ïîìåùàåì ðåçóëüòàò ðàáîòû ñêðèïòà
$PathBase = "$PathPrefix\base" # êàòàëîã, ãäå ðàñïîëîæåíû ôàéëû áàçû
# çàäàåì äàòó è âðåìÿ:
$d=get-date -uformat "%Y-%m-%d"
$t=get-date -uformat "%H:%M"
# èìÿ ïîëüçîâàòåëÿ: (à íàäî ëè?)
$UserName = "$env:username"
$ErrorSleep = 5
$NoError = "íåò"
# êîëè÷åñòâî ñðàáàòûâàíèé
$activation=0
$watcher_start_d = get-date -uformat "%Y-%m-%d"
$watcher_start_t = get-date -uformat "%H:%M"
#<--Îïèñûâàåì âñå ïåðåìåííûå áëîêà
#---#-------------------------------------------------------------------------------------------------------
#-->Ôóíêöèÿ ôîðìàòèðîâàíèÿ ñòðîêè â åêñåëå
function Excel_format_1 {
$lineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type]
$colorIndex = "microsoft.office.interop.excel.xlColorIndex" -as [type]
#---ïî öåíòðó, ðàìêà, âûäåëèòü æèðíûì
$selection.Interior.ColorIndex = 40
$selection.VerticalAlignment = -4108 #ïî öåíòðó
$selection.HorizontalAlignment = -4108 #ïî öåíòðó
# Âûäåëÿåì òàáëèöó (ðàìêà)
$selection.borders.LineStyle = $lineStyle::xlContinuous
$selection.borders.ColorIndex = $colorIndex::xlColorIndexAutomatic
# Ðàçóêðàøèâàåì
$selection.Font.Size = 12
$selection.Font.ColorIndex = 55
$selection.Font.Color = 8210719
# Âûäåëÿåì æèðíûì
$selection.Font.Bold = $true
# Ðîâíÿåì øèðèíó ñòîëáöîâ
$UsedRange = $ws.UsedRange
$UsedRange.EntireColumn.AutoFit() | Out-Null
}
function Excel_format_2 {
$lineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type]
$colorIndex = "microsoft.office.interop.excel.xlColorIndex" -as [type]
#---ïî öåíòðó, ïî ëåâî
$selection.VerticalAlignment = -4108 #ïî öåíòðó
$selection.HorizontalAlignment = -4131 #ïî ëåâî
# Ðîâíÿåì øèðèíó ñòîëáöîâ
$UsedRange = $ws.UsedRange
$UsedRange.EntireColumn.AutoFit() | Out-Null
}
#--<Ôóíêöèÿ ôîðìàòèðîâàíèÿ ñòðîêè â åêñåëå
#-->Ôóíêöèÿ ëîãà ïåðåìåùåíèé
function moves_log {
$ex = new-object -com Excel.Application
$wb = $ex.Workbooks.Open("$PathOut\moves_log.xlsx")
$ws = $wb.Worksheets.Item(1)
$Row = $ws.Range("A65536").End(-4162).Row + 1
# Çàïîëíÿåì
$ws.Cells.Item($Row,1) = $d
$ws.Cells.Item($Row,2) = $t
$ws.Cells.Item($Row,3) = $FileZipCurrent.name
$ws.Cells.Item($Row,4) = $FileXmlCurrent.name
$ws.Cells.Item($Row,5) = $DocTypeRus
$ws.Cells.Item($Row,6) = $CadastralNumber
$ws.Cells.Item($Row,7) = $DateCreateDoc
$ws.Cells.Item($Row,8) = "->"
$ws.Cells.Item($Row,9) = "`=ÃÈÏÅÐÑÑÛËÊÀ(`"$OutPath`";`"$OutPath`")"
$ws.Cells.Item($Row,10) = $OutName
# Îôîðìëÿåì
$selection = $ws.Range(("A{0}" -f $Row),("J{0}" -f $Row))
#$selection.Select() | Out-Null
Excel_format_2
# çàêðûâàåì
$selection = $null
$wb.Save()
$wb.Close($false)
$ex.Quit()
$excel = $null
}
#--<Ôóíêöèÿ ëîãà ïåðåìåùåíèé
#-->Ôóíêöèÿ ëîãà îøèáîê
function error_log {
$ex = new-object -com Excel.Application
$wb = $ex.Workbooks.Open("$PathOut\moves_log.xlsx")
$ws = $wb.Worksheets.Item(2)
$Row = $ws.Range("A65536").End(-4162).Row + 1
# Çàïîëíÿåì
$ws.Cells.Item($Row,1) = $d
$ws.Cells.Item($Row,2) = $t
$ws.Cells.Item($Row,3) = $FileXmlCurrent.name
$ws.Cells.Item($Row,4) = $ErrorText
$ws.Cells.Item($Row,5) = $ErrorHelp
# Îôîðìëÿåì
$selection = $ws.Range(("A{0}" -f $Row),("E{0}" -f $Row))
#$selection.Select() | Out-Null
Excel_format_2
# çàêðûâàåì
$selection = $null
$wb.Save()
$wb.Close($false)
$ex.Quit()
$excel = $null
}
#--<Ôóíêöèÿ ëîãà îøèáîê
#-->Ôóíêöèÿ ôîðìèðîâàíèÿ ïóòè è èìåíè ôàéëà
function Out_PathAndName ($CadastralNumber) {
# ðàçáèòü êàäàñòðîâûé íîìåð íà ïîäñòðîêè ïî ":" â èòîãå èìååì ñëåäóþùèå ïåðåìåííûå:
$Cad_Region = $CadastralNumber.split(":")[0]
$Cad_Rayion = $CadastralNumber.split(":")[1]
$Cad_Kvartal = $CadastralNumber.split(":")[2]
$Cad_Uchastok = $CadastralNumber.split(":")[3]
# âûðîâíÿåì çíà÷åíèå ó÷àñòêà äî 4 çíàêîâ
Switch ($Cad_Uchastok.length) {
1 {$Cad_Uchastok = "000$Cad_Uchastok"}
2 {$Cad_Uchastok = "00$Cad_Uchastok"}
3 {$Cad_Uchastok = "0$Cad_Uchastok"}
}
if ($Cad_Region -eq $null) {
$ErrorCode = "04-01"
$ErrorText = "íå óäàëîñü îïðåäåëèòü ðåãèîí ($Cad_Region)"
$ErrorHelp = 'âîîáùå òî òàêîé îøèáêè áûòü íå äîëæíî'
#error_log ($d, $t, $FileXmlCurrent.name, $ErrorText, $ErrorHelp)
}
# çàãðóçèì ðåãèîíû â ìàññèâ:
if (test-path "$PathBase\regions.txt") {
$BaseRegions = Get-Content "$PathBase\regions.txt" | %{ConvertFrom-StringData -StringData $_}
$Region = $BaseRegions[$Cad_Region]."r$Cad_Region" # ðåãèîí Ðóññêìè áóêâàìè $Region (çíà÷åíèå [ñòðîêè] ïîñëå "rÐÅÃÈÎÍ=")
} else {
$ErrorCode = "04-02"
$ErrorText = "îòñóòñòâóåò ïåðå÷åíü ðåãèîíîâ"
$ErrorHelp = "ïîìåñòèòå ôàéë regions.txt â êàòàëîã $PathPrefix\base"
#error_log ($d, $t, $FileXmlCurrent.name, $ErrorText, $ErrorHelp)
}
# çàãðóçèì ðàéîíû â ìàññèâ:
if (test-path "$PathBase\$Cad_Region`_rayion.txt") {
$BaseRayions = Get-Content "$PathBase\$Cad_Region`_rayion.txt" | %{ConvertFrom-StringData -StringData $_}
$Rayion = $BaseRayions[$Cad_Rayion]."r$Cad_Rayion" # ðàéîí Ðóññêìè áóêâàìè $Rayion
# êàòàëîã è èìÿ ôàéëà-ðåçóëüòàòà:
$OutPath = "$PathOut\$Cad_Region $Region\$Cad_Region-$Cad_Rayion $Rayion\$Cad_Region-$Cad_Rayion-$Cad_Kvartal"
if ($Cad_Uchastok -ne $null) {
$OutName = "$DocTypeRus íà $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal`-$Cad_Uchastok îò $DateCreateDoc`.xml"
}else{
$OutName = "$DocTypeRus íà $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal îò $DateCreateDoc`.xml"
}
} else {
$ErrorCode = "04-03"
$ErrorText = "îòñóòñòâóåò ïåðå÷åíü ðàéîíîâ ïî $Cad_Region ðåãèîíó ($Region)"
$ErrorHelp = "ïîìåñòèòå ôàéë $Cad_Region`_rayion.txt â êàòàëîã $PathPrefix\base"
#error_log ($d, $t, $FileXmlCurrent.name, $ErrorText, $ErrorHelp)
}
#íà âûõîäå:
$ErrorCode
$ErrorText
$ErrorHelp
$Cad_Region
$Cad_Rayion
$Cad_Kvartal
$Cad_Uchastok
$Region
$Rayion
$OutPath
$OutName
}
#--<Ôóíêöèÿ ôîðìèðîâàíèÿ ïóòè è èìåíè ôàéëà
#---#-------------------------------------------------------------------------------------------------------
#-->Åñëè òàáëèöû íåò, ñîçäàåì
if (!(test-path "$PathOut\moves_log.xlsx")) {
#-->Ïåðâûé ëèñò
$ex = New-Object -Com Excel.Application
$wb = $ex.Workbooks.Add()
$ws = $wb.Worksheets.Item(1)
$ws.Name = 'ÎÒ×ÅÒ'
$Row=1
# Çàïîëíÿåì
$ws.Cells.Item($Row,1) = "äàòà"
$ws.Cells.Item($Row,2) = "âðåìÿ"
$ws.Cells.Item($Row,3) = "èìÿ àðõèâà"
$ws.Cells.Item($Row,4) = "èìÿ ôàéëà"
$ws.Cells.Item($Row,5) = "òèï äîêóìåíòà"
$ws.Cells.Item($Row,6) = "êàäàñòðîâûé íîìåð"
$ws.Cells.Item($Row,7) = "àêòóàëüíîñòü"
$ws.Cells.Item($Row,8) = "->"
$ws.Cells.Item($Row,9) = "íîâîå õðàíèëèùå"
$ws.Cells.Item($Row,10) = "íîâîå èìÿ"
# Îôîðìëÿåì
$selection = $ws.Range(("A{0}" -f $Row),("J{0}" -f $Row))
#$selection.Select() | Out-Null
Excel_format_1
#-->Âòîðîé ëèñò
$ws = $wb.Worksheets.Item(2)
$ws.Name = 'ÎØÈÁÊÈ'
$Row=1
# Çàïîëíÿåì
$ws.Cells.Item($Row,1) = "äàòà"
$ws.Cells.Item($Row,2) = "âðåìÿ"
$ws.Cells.Item($Row,3) = "èìÿ ôàéëà"
$ws.Cells.Item($Row,4) = "òåêñò îøèáêè"
$ws.Cells.Item($Row,5) = "ïðè÷èíà"
# Îôîðìëÿåì
$selection = $ws.Range(("A{0}" -f $Row),("E{0}" -f $Row))
#$selection.Select() | Out-Null
Excel_format_1
$selection = $null
$wb.SaveAs("$PathOut\moves_log.xlsx")
$wb.Close($false)
$ex.Quit()
$excel = $null
}
#--<Åñëè òàáëèöû íåò, ñîçäàåì
#---#-------------------------------------------------------------------------------------------------------
#-->Íàáëþäàòåëü çà ïàïêîé. ïðè ïîÿâëåíèè ôàéëà, îáðàáàòûâàåò åãî:
while($TRUE){
Clear-Host
Write-Host "íàáëþäàåì çà`t$PathIn\"
Write-Host "íàáëþäàåì ñ`t$watcher_start_d $watcher_start_t"
Write-Host "ñðàáàòûâàíèé`t$activation"
if ($DocTypeRus -ne $null) {
Write-Host "-----------------------------------------"
if ($AText1 -ne $null) {Write-Host "$AText1"}
if ($AText2 -ne $null) {Write-Host "$AText2"}
if ($AText3 -ne $null) {Write-Host "$AText3"}
if ($AText4 -ne $null) {Write-Host "$AText4"}
if ($AText5 -ne $null) {Write-Host "$AText5"}
Write-Host "-----------------------------------------"
}
Remove-Variable FilesZip,FilesXml -ErrorAction SilentlyContinue
$FilesZip = Get-ChildItem $PathIn\* -Include *.zip
$FilesXml = Get-ChildItem $PathIn\* -Include *.xml
# øàïêà
$WinTitle=(get-host).UI.RawUI
$WinTitle.WindowTitle="XML-ÃÊÍ ($activation)"
if (($FilesZip -eq $null) -and ($FilesXml -eq $null)) {
start-sleep 10 # çàäåðæêà ïåðåä ñëåäóþùèì ïðîõîäîì
continue
} else {
#--> ñòàðò îñíîâíîìó ôàéëó
Clear-Host
#-->Îáðàáîòêà àðõèâîâ
if ($FilesZip -ne $null) {
Remove-Variable FileZipCurrent_count,FilesZip_count -ErrorAction SilentlyContinue
ForEach ($FileZipCurrent in $FilesZip) { #êàæäîå çíà÷åíèå $FilesZip äåëàåì ñ $FileZipCurrent:
if ($FilesZip.count -ge "2") { #ïðîâåðêà íà ïóñòîå çíà÷åíèå (åñëè 1 ôàéë, òî íå çàïèñûâàåòñÿ)
$FilesZip_count = $FilesZip.count
} else {
$FilesZip_count = 1
}
$FileZipCurrent_count++
#--> # èçâëåêàåì èç àðõèâà:
$PathZip="$PathIn\"
[string]$zipfilename = $FileZipCurrent
[string]$destination = $PathZip
if(test-path($FileZipCurrent)) {
$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
$destinationFolder = $shellApplication.NameSpace($destination)
$destinationFolder.CopyHere($zipPackage.Items())
}
# óäàëÿåì àðõèâ:
Remove-Item "$FileZipCurrent"
}#<--Îáðàáîòêà zip
} else { # íå íàéäåíû zip
Write-Host "íå íàéäåíû zip-àðõèâû. èùåì xml..." -ForegroundColor Yellow
start-sleep 1
#--> # Îáðàáîòêà xml
$FilesXml = Get-ChildItem $PathIn\* -Include *.xml
if ($FilesXml -ne $null) {
Remove-Variable FileXmlCurrent_count,FilesXml_count -ErrorAction SilentlyContinue
ForEach ($FileXmlCurrent in $FilesXml) { # êàæäîå çíà÷åíèå $FilesXml äåëàåì ñ $FileXmlCurrent:
Remove-Variable ErrorCode,ErrorText,ErrorHelp -ErrorAction SilentlyContinue
Remove-Variable info,DocNumber,DateCreateDoc,CadastralNumber,Cad_Region,Cad_Rayion,Cad_Kvartal,Cad_Uchastok,Region,Rayion -ErrorAction SilentlyContinue
Remove-Variable DocTypeRus,DocType,DocVers,OutPath,OutName -ErrorAction SilentlyContinue
if ($FilesXml.count -ge "2") { # Ïðîâåðêà íà ïóñòîå çíà÷åíèå (åñëè 1 ôàéë, òî íå çàïèñûâàåòñÿ)
$FilesXml_count = $FilesXml.count
} else {
$FilesXml_count = 1
}
$FileXmlCurrent_count++
Clear-Host
Write-Host "îáðàáàòûâàåì zip ôàéë: $FileZipCurrent_count èç $FilesZip_count `t($($FileZipCurrent.name))"
Write-Host "îáðàáàòûâàåì xml ôàéë: $FileXmlCurrent_count èç $FilesXml_count `t($($FileXmlCurrent.name))"
Write-Host "-------------------------------------------------------------------------------"
#--> #---Îñíîâîíîå äåéñòâî---#
$oXmlDocument = New-Object -TypeName System.Xml.XmlDocument # ñîçäàåì íîâûé îáúåêò êàê xml
$oXmlDocument.load($FileXmlCurrent) # çàãðóæàåì òåêóùèé ôàéë â ïåðåìåííóþ îáðàáîòêè
$DocType = $oXmlDocument."xml-stylesheet".split("/")[6]
$DocVers = $oXmlDocument."xml-stylesheet".split("/")[7]
if ($DocType -ne $null) { # òèï äîêóìåíòà èç âòîðîé ñòðîêè xml
Switch ($DocType) { # ïðîéäåìñÿ ïî èçâåñòíûì òèïàì äîêóìåíòîâ
KPT { # ÊÏÒ
$DocTypeRus = "ÊÏÒ"
Write-Host "òèï äîêóìåíòà:" `t `t $DocTypeRus
Switch ($DocVers) { # ïðîéäåìñÿ ïî èçâåñòíûì âåðñèÿì äîêóìåíòà (íà÷àë ñ 9, îñòàëüíûå ñòàðûå)
"09" { # https://portal.rosreestr.ru/xsl/GKN/KPT/09/common.xsl
Write-Host "âåðñèÿ äîêóìåíòà:" `t $DocVers
# ïîëó÷àåì çíà÷åíèÿ â ïåðåìåííûå #--------------------------------------------------------------
$DateCreateDoc = $oXmlDocument.KPT.CertificationDoc.Date
$CadastralNumber = $oXmlDocument.KPT.CadastralBlocks.CadastralBlock.CadastralNumber
$info=Out_PathAndName ($CadastralNumber)
if ($info[0] -ne $null) {$ErrorCode = $info[0]}
if ($info[1] -ne $null) {$ErrorText = $info[1]}
if ($info[2] -ne $null) {$ErrorHelp = $info[2]}
if ($info[3] -ne $null) {$Cad_Region = $info[3]}
if ($info[4] -ne $null) {$Cad_Rayion = $info[4]}
if ($info[5] -ne $null) {$Cad_Kvartal = $info[5]}
if ($info[6] -ne $null) {$Cad_Uchastok = $info[6]}
if ($info[7] -ne $null) {$Region = $info[7]}
if ($info[8] -ne $null) {$Rayion = $info[8]}
if ($info[9] -ne $null) {$OutPath = $info[9]}
if ($info[10] -ne $null) {$OutName = $info[10]}
} # çàêîí÷èëè ñ 9 âåðñèåé ÊÏÒ
Default { # ÷òî äåëàòü, êîãäà âåðñèÿ ÊÏÒ íå îïèñàíà
Write-Host "âåðñèÿ äîêóìåíòà:" `t $DocVers
$ErrorCode = "03-01"
$ErrorText = "$DocVers âåðñèÿ $DocTypeRus íå ìîæåò áûòü îáðàáîòàíà"
$ErrorHelp = 'âûøëà íîâàÿ âåðñèÿ XML-ñõåìû'
} # çàêîí÷èëè ñ âàðèàíòîì, êîãäà âåðñèÿ ÊÏÒ íå îïèñàíà
} # çàêîí÷èëè ñ ïðîõîäîì ïî âåðñèÿì ÊÏÒ
} # çàêîí÷èëè ñ ÊÏÒ
Vidimus { # âûïèñêà
$DocTypeRus = "ÊÂÇÓ"
Write-Host "òèï äîêóìåíòà:" `t `t $DocTypeRus
Switch ($DocVers) {
"06" { # https://portal.rosreestr.ru/xsl/GKN/Vidimus/06/common.xsl
Write-Host "âåðñèÿ äîêóìåíòà:" `t $DocVers
# ïîëó÷àåì çíà÷åíèÿ â ïåðåìåííûå #--------------------------------------------------------------
$DateCreateDoc = $oXmlDocument.KVZU.CertificationDoc.Date
$CadastralNumber = $oXmlDocument.KVZU.Parcels.Parcel.CadastralNumber
$info=Out_PathAndName ($CadastralNumber)
if ($info[0] -ne $null) {$ErrorCode = $info[0]}
if ($info[1] -ne $null) {$ErrorText = $info[1]}
if ($info[2] -ne $null) {$ErrorHelp = $info[2]}
if ($info[3] -ne $null) {$Cad_Region = $info[3]}
if ($info[4] -ne $null) {$Cad_Rayion = $info[4]}
if ($info[5] -ne $null) {$Cad_Kvartal = $info[5]}
if ($info[6] -ne $null) {$Cad_Uchastok = $info[6]}
if ($info[7] -ne $null) {$Region = $info[7]}
if ($info[8] -ne $null) {$Rayion = $info[8]}
if ($info[9] -ne $null) {$OutPath = $info[9]}
if ($info[10] -ne $null) {$OutName = $info[10]}
} # çàêîí÷èëè ñ 6 âåðñèåé ÊÂÇÓ
Default { # ÷òî äåëàòü, êîãäà âåðñèÿ ÊÂÇÓ íå îïèñàíà
Write-Host "âåðñèÿ äîêóìåíòà:" `t $DocVers
$ErrorCode = "03-01"
$ErrorText = "$DocVers âåðñèÿ $DocTypeRus íå ìîæåò áûòü îáðàáîòàíà"
$ErrorHelp = 'âûøëà íîâàÿ âåðñèÿ XML-ñõåìû'
} # çàêîí÷èëè ñ âàðèàíòîì, êîãäà âåðñèÿ ÊÂÇÓ íå îïèñàíà
} # çàêîí÷èëè ñ ïðîõîäîì ïî âåðñèÿì ÊÂÇÓ
} # çàêîí÷èëè ñ ÊÂÇÓ
Vidimus_KP { # êàäàñòðîâûé ïàñïîðò
$DocTypeRus = "ÊÏÇÓ"
Write-Host "òèï äîêóìåíòà:" `t `t $DocTypeRus
Switch ($DocVers) {
"03" { # https://portal.rosreestr.ru/xsl/GKN/Vidimus_KP/03/common.xsl
Write-Host "âåðñèÿ äîêóìåíòà:" `t $DocVers
$ÊÏÇÓ_ñ÷åò÷èê++
# ïîëó÷àåì çíà÷åíèÿ â ïåðåìåííûå #--------------------------------------------------------------
$DateCreateDoc = $oXmlDocument.Region_Cadastr_Vidimus_KP.Package.Certification_Doc.Date
$CadastralNumber = $oXmlDocument.Region_Cadastr_Vidimus_KP.Package.Federal.Cadastral_Regions.Cadastral_Region.Cadastral_Districts.Cadastral_District.Cadastral_Blocks.Cadastral_Block.Parcels.Parcel.CadastralNumber
$info=Out_PathAndName ($CadastralNumber)
if ($info[0] -ne $null) {$ErrorCode = $info[0]}
if ($info[1] -ne $null) {$ErrorText = $info[1]}
if ($info[2] -ne $null) {$ErrorHelp = $info[2]}
if ($info[3] -ne $null) {$Cad_Region = $info[3]}
if ($info[4] -ne $null) {$Cad_Rayion = $info[4]}
if ($info[5] -ne $null) {$Cad_Kvartal = $info[5]}
if ($info[6] -ne $null) {$Cad_Uchastok = $info[6]}
if ($info[7] -ne $null) {$Region = $info[7]}
if ($info[8] -ne $null) {$Rayion = $info[8]}
if ($info[9] -ne $null) {$OutPath = $info[9]}
if ($info[10] -ne $null) {$OutName = $info[10]}
} # çàêîí÷èëè ñ 3 âåðñèåé ÊÏÇÓ
Default { # ÷òî äåëàòü, êîãäà âåðñèÿ ÊÏÇÓ íå îïèñàíà
Write-Host "âåðñèÿ äîêóìåíòà:" `t $DocVers
$ErrorCode = "03-01"
$ErrorText = "$DocVers âåðñèÿ $DocTypeRus íå ìîæåò áûòü îáðàáîòàíà"
$ErrorHelp = 'âûøëà íîâàÿ âåðñèÿ XML-ñõåìû'
} # çàêîí÷èëè ñ âàðèàíòîì, êîãäà âåðñèÿ ÊÏÇÓ íå îïèñàíà
} # çàêîí÷èëè ñ ïðîõîäîì ïî âåðñèÿì ÊÏÇÓ
} # çàêîí÷èëè ñ ÊÏÇÓ
Default { # ÷òî äåëàòü, êîãäà òèï äîêóìåíòà íå îïèñàí
$ErrorCode = "02-01"
$ErrorText = "òèï äîêóìåíòà $DocType íå ìîæåò áûòü îáðàáîòàí"
$ErrorHelp = 'ñêîðåå âñåãî èçìåíèëîñü íàèìåíîâàíèå äîêóìåíòà($DocType) â xml'
#error_log ($d, $t, $FileXmlCurrent.name, $ErrorText, $ErrorHelp)
#rename-item -path "$FileXmlCurrent" -newname "$($FileXmlCurrent.name)`.ÎØÈÁÊÀ"
#break
}
} # çàêîí÷èëè ñ ïðîõîäîì ïî òèïàì äîêóìåíòîâ
} else { # íå óäàëîñü îïðåäåëèòü òèï äîêóìåíòà
$ErrorCode = "01-01"
$ErrorText = "íå óäàëîñü îïðåäåëèòü òèï äîêóìåíòà"
$ErrorHelp = 'â xml âòîðàÿ ñòðîêà äîëæíà íà÷èíàòüñÿ ñ <?xml-stylesheet type="text/xsl" href="'
#error_log ($d, $t, $FileXmlCurrent.name, $ErrorText, $ErrorHelp)
#break
}
#-->âûøå îáðàáîòêà xml íèæå ïåðåìåùåíèå
#
#-->Îïèñûâàåì ïåðåìåííûå ïîëó÷åííûå â ðåçóëüòàòå ðàáîòû<-----#
# #
# $FileXmlCurrent îáðàáàòûâàåìûé xml ôàéë #
# #
# $ErrorCode êîä îøèáêè #
# $ErrorText #
# $ErrorHelp #
# #
# $Cad_Region êàäàñòðîâûé ðåãèîí öèôðàìè #
# $Cad_Rayion êàäàñòðîâûé ðàéîí öèôðàìè #
# $Cad_Kvartal êàäàñòðîâûé êâàðòàë öèôðàìè #
# $CadastralNumber êàäàñòðîâûé íîìåð öèôðàìè ïîëíîñòüþ #
# #
# $Region ðåãèîí áóêâàìè #
# $Rayion ðàéîí áóêâàìè #
# #
# $OutPath ñôîðìèðîâàííûé ïóòü #
# $OutName ñôîðìèðîâàííîå èìÿ #
# #
#<--Îïèñûâàåì ïåðåìåííûå ïîëó÷åííûå â ðåçóëüòàòå ðàáîòû----->#
#
if ($ErrorCode -ne $null) { # åñëè îøèáêè áûëè
Clear-Host
Write-Host "-------------------------------------------------------------------------------" -ForegroundColor Yellow
Write-Host "â ïðîöåññå îáðàáîòêè xml âîçíèêëà îøèáêà:" -ForegroundColor Yellow
Write-Host "-------------------------------------------------------------------------------" -ForegroundColor Yellow
Write-Host "Êîä îøèáêè:" `t $ErrorCode
Write-Host "Òåêñò:" `t`t $ErrorText
Write-Host "Äåéñòâèå:" `t $ErrorHelp
msg $UserName /TIME:9000 "$ErrorText"
start-sleep $ErrorSleep
$OutPath="$PathOut\ïðîáëåìíûå\$ErrorCode"
if (!(test-path "$OutPath\")) { # ïðîâåðêà íà ñóùåñòâîâàíèå êàòàëîà, åñëè íåò:
new-item -path $PathOut -name "ïðîáëåìíûå\$ErrorCode" -type directory -force | Out-Null
}
if (test-path "$OutPath\$($FileXmlCurrent.name)") { # ïðîâåðêà íà ñóùåñòâîâàíèå ôàéëà â êàòàëîãå íàçíà÷åíèÿ, åñëè çàíÿòî:
Write-Host "îáðàòèòå âíèìàíèå: òàêîé ôàéë óæå èìååòñÿ" -ForegroundColor Yellow
Remove-Variable Flag_ReName,NamePlus -ErrorAction SilentlyContinue
$NamePlus=1
$OutNamePovtor = $(($FileXmlCurrent.name).Substring(0,($($FileXmlCurrent.name).Length -4)))
While ($Flag_ReName -eq $null) { # ïîêà ôëàã ïóñòîé ïðîâåðÿåì ñóùåñòâîâàíèå ôàéëà è äîáàâëÿåì 1 ê NamePlus
if (test-path "$OutPath\$OutNamePovtor ($NamePlus)`.xml") {
$NamePlus++
} else {
$OutName = "$OutNamePovtor ($NamePlus)`.xml"
$Flag_ReName=$NamePlus
}
}
}
move-item -path "$FileXmlCurrent" -destination "$OutPath\$OutName"
if (test-path "$FileXmlCurrent`.sig") {
$OutName = "$OutNamePovtor ($NamePlus)`.xml`.sig"
move-item -path "$FileXmlCurrent`.sig" -destination "$OutPath\$OutName"
}
error_log ($d, $t, $FileXmlCurrent.name, $ErrorText, $ErrorHelp)
moves_log ($d, $t, $FileZipCurrent.name, $FileXmlCurrent.name, $DocTypeRus, $DateCreateDoc, $OutPath, $OutName)
} else { # åñëè îøèáîê íå áûëî
$NoError="äà"
###############------------------------------------------------------------------------------------#
if ($DateCreateDoc -ne $null) {Write-Host "äàòà ôîðìèðîâàíèÿ:" `t $DateCreateDoc}
if ($CadastralNumber -ne $null) {Write-Host "êàäàñòðîâûé íîìåð:" `t $CadastralNumber}
if ($Region -ne $null) {Write-Host "ðåãèîí:" `t `t $Region}
if ($Rayion -ne $null) {Write-Host "ðàéîí:" `t `t `t $Rayion}
###############------------------------------------------------------------------------------------#
#-->ïåðåìåùàåì:
if (!(test-path "$OutPath")) { # ïðîâåðêà íà ñóùåñòâîâàíèå êàòàëîãà
new-item -path $OutPath -type directory -force | Out-Null
}
if (!(test-path "$OutPath\$OutName")) { # ïðîâåðêà íà ñóùåñòâîâàíèå ôàéëà â êàòàëîãå íàçíà÷åíèÿ, åñëè ïóñòî:
move-item -path "$FileXmlCurrent" -destination "$OutPath\$OutName"
moves_log ($d, $t, $FileZipCurrent.name, $FileXmlCurrent.name, $DocTypeRus, $DateCreateDoc, $OutPath, $OutName)
if (test-path "$FileXmlCurrent`.sig") { # ïðîâåðêà íà íàëè÷èå öèôðîâîé ïîäïèñè
move-item -path "$FileXmlCurrent`.sig" -destination "$OutPath\$OutName`.sig"
}
# äåëàåì ôàéëû ñ êîîðäèíàòàìè è ÎÑÌ
if (($DocTypeRus -eq "ÊÏÒ") -and ($DocVers -eq "09") -and ($($FileXmlCurrent.Length / 1Mb) -ge 5)) {
Write-Host ""
Write-Host "äåëàåì ôàéë ñ êîîðäèíàòàìè"
$Sek=((Measure-Command {
$FileOutCSV = "$OutPath\Êîîðäèíàòû ê $DocTypeRus íà $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal îò $DateCreateDoc`.csv"
# çàïîëíèì çàãîëîâîê
"êàäàñòðîâûé íîìåð;íîìåð òî÷êè;X;Y;ïîãðåøíîñòü" | Out-File -FilePath $FileOutCSV -Encoding 'default'
"1;2;3;4;5" | Out-File -Append -FilePath $FileOutCSV -Encoding 'default'
$StrokKoordinat=0
$oXmlDocument.KPT.CadastralBlocks.CadastralBlock.Parcels.Parcel |`
ForEach-Object -Process {
$CadNumUch = $_.CadastralNumber
$_.EntitySpatial.SpatialElement.SpelementUnit |`
ForEach-Object -Process {
if ($_.SuNmb -ne $null) {
$StrokKoordinat++
"$CadNumUch;$($_.SuNmb);$($_.Ordinate.X -replace "\.",",");$($_.Ordinate.Y -replace "\.",",");$($_.Ordinate.DeltaGeopoint -replace "\.",",")"`
| Out-File -Append -FilePath $FileOutCSV -Encoding 'default'
}
}
}
}).TotalSeconds.tostring("F00"))
# âñåãî ñåêóíä + ñêîëüêî îáðàáîòàíî ñòðîê
Write-Host "--------------------------"
Write-Host "ñåêóíä ïîòðà÷åíî:" `t $Sek
Write-Host "ñòðîê îáðàáîòàíî:" `t $StrokKoordinat
start-sleep $ErrorSleep
Write-Host "ñîçäàí ôàéë:" `t `t "Êîîðäèíàòû ê $DocTypeRus íà $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal îò $DateCreateDoc`.csv"
# äåëàåì ôàéë ñ ÎÌÑ
if ($oXmlDocument.KPT.CadastralBlocks.CadastralBlock.OMSPoints.OMSPoint) {
Write-Host ""
Write-Host "äåëàåì ôàéë ñ ÎÌÑ"
$Sek=((Measure-Command {
$FileOutCSV = "$OutPath\ÎÌÑ ê $DocTypeRus íà $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal îò $DateCreateDoc`.csv"
# çàïîëíèì çàãîëîâîê
"Íîìåð ïóíêòà îïîðíîé ìåæåâîé ñåòè íà ïëàíå;Íàçâàíèå è (èëè) íîìåð, òèï ïóíêòà îïîðíîé ìåæåâîé ñåòè;Êëàññ îïîðíîé ìåæåâîé ñåòè;X;Y" | Out-File -FilePath $FileOutCSV -Encoding 'default'
"1;2;3;4;5" | Out-File -Append -FilePath $FileOutCSV -Encoding 'default'
$StrokOMS=0
$oXmlDocument.KPT.CadastralBlocks.CadastralBlock.OMSPoints.OMSPoint |`
ForEach-Object -Process {
$StrokOMS++
"$($_.PNmb);$($_.PName -replace ";"," ");$($_.PKlass -replace ";"," ");$($_.OrdX -replace "\.",",");$($_.OrdY -replace "\.",",")"`
| Out-File -Append -FilePath $FileOutCSV -Encoding 'default'
}
}).TotalSeconds.tostring("F00"))
# âñåãî ñåêóíä + ñêîëüêî îáðàáîòàíî ñòðîê
Write-Host "--------------------------"
Write-Host "ñåêóíä ïîòðà÷åíî:" `t $Sek
Write-Host "ñòðîê îáðàáîòàíî:" `t $StrokOMS
Write-Host "ñîçäàí ôàéë:" `t `t "ÎÌC ê $DocTypeRus íà $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal îò $DateCreateDoc`.csv"
start-sleep $ErrorSleep
}
}
} else { #-->åñëè çàíÿòî
Write-Host "îáðàòèòå âíèìàíèå: òàêîé ôàéë óæå èìååòñÿ" -ForegroundColor Yellow
if (!(test-path "$PathOut\ïîâòîðû")) {
new-item -path "$PathOut\ïîâòîðû" -type directory -force | Out-Null
}
Remove-Variable Flag_ReName,NamePlus -ErrorAction SilentlyContinue
$NamePlus=1
$OutNamePovtor = $OutName.Substring(0,($OutName.Length -4)) # ñðåçàåì 4 ñèìâîëà ñ êîíöà
While ($Flag_ReName -eq $null) { # ïîêà ôëàã ïóñòîé ïðîâåðÿåì ñóùåñòâîâàíèå ôàéëà è äîáàâëÿåì 1 ê NamePlus
if (!(test-path "$PathOut\ïîâòîðû\$OutNamePovtor ($NamePlus)`.xml")) {
$OutPath = "$PathOut\ïîâòîðû\"
$OutName = "$OutNamePovtor ($NamePlus)`.xml"
$Flag_ReName=$NamePlus
move-item -path "$FileXmlCurrent" -destination "$OutPath\$OutName"
moves_log ($d, $t, $FileZipCurrent.name, $FileXmlCurrent.name, $DocTypeRus, $DateCreateDoc, $OutPath, $OutName)
if (test-path "$FileXmlCurrent`.sig") {
$OutName = "$OutNamePovtor ($NamePlus)`.xml`.sig"
move-item -path "$FileXmlCurrent`.sig" -destination "$OutPath\$OutName"
}
} else {
$NamePlus++
}
}
} # /çàêîí÷èëè ñ ïåðåìåùåíèåì
}
#--> # ñîîáùåíèå ïîñëå îáðàáîòêè êàæäîãî ôàéëà
Write-Host "-----------------------------------------"
Write-Host "èùåì ñëåäóþùèé ôàéë..."
Write-Host ""
start-sleep 2
$activation++
if ($NoError -eq "äà") {
if ($activation -eq 1) {$AText1 = "$activation`t$DocTypeRus`t$CadastralNumber"}
if ($activation -eq 2) {$AText2 = "$activation`t$DocTypeRus`t$CadastralNumber"}
if ($activation -eq 3) {$AText3 = "$activation`t$DocTypeRus`t$CadastralNumber"}
if ($activation -eq 4) {$AText4 = "$activation`t$DocTypeRus`t$CadastralNumber"}
if ($activation -eq 5) {$AText5 = "$activation`t$DocTypeRus`t$CadastralNumber"}
if ($activation -gt 5) {
$AText1 = $AText2
$AText2 = $AText3
$AText3 = $AText4
$AText4 = $AText5
$AText5 = "$activation`t$DocTypeRus`t$CadastralNumber"
}
}
} # êàæäîå çíà÷åíèå $FilesXml äåëàåì ñ $FileXmlCurrent
} else { # íå íàéäåíû xml
Write-Host "íå íàéäåíû xml-ôàéëû..." -ForegroundColor Yellow
start-sleep $ErrorSleep
continue
}
}#<--Îáðàáîòêà xml (åñëè íå íàéäåíû zip)
}#<--Åñëè ñðàáîòàë àêòèâàòîð
}
#/çàêîí÷èëè ñî ñðàáàòûâàíèåì íà ôàéë â $ZipPath
íà âñÿêèé ñëó÷àé, åñëè êòî ðåøèòüñÿ, ñêðèïò è ôàéëû êîòîðûå îí îáðàáàòûâàåò â àðõèâå
|