###############################################################################################################
# Поломошнов Александр Анатольевич
# вер. 2-19 от 2014-11-12
# вывел основной скрипт из ватчера
# вер. 2-18 от 2014-09-26
# косметические правки (не влияют на работу скрипта)
# вер. 2-18 от 2014-08-06
# добавлена строка 31 (Set-ExecutionPolicy remotesigned) необходимо для запуска локальных скриптов,
# созданных на другой машине
# вер. 2-17 от 2014-07-31
# добавлена обработка ЕГРП 04 версии (пришлось добавить обработку PDF)
# вер. 2-16 от 2014-07-29
#
# сортировка xml файлов росреестра (КПТ, КВЗУ и прочие..)
# - программа мониторит каталог $ZipPath на предмет появления новых файлов
# (обрабатывает как zip, так и xml)
# - далее размещает в каталоге $RezultatPath переименованные файлы согласно заданной структуре
######################
# для работы необходимо задать пути к переменным:
# - $ZipPath откуда брать и куда вы будете складывать zip & xml файлы от росреестра
# - $BasePath путь к базе районов
# файл regions.txt
# r00=типа нулевая строка
# r01=Республика Адыгея
# ...
# файл XX_rayion.txt
# r00=Условный кадастровый район
# r01=Прилузский
# ...
# - $RezultatPath куда будут перемещены файлы
# - $otchet краткий лог о срабатываниях
# ######################
# когда нить тут будет полное описание. начнем:
# ###############################################################################################################
Set-ExecutionPolicy remotesigned
# задаем пути к папкам:
$ZipPath = "\\serv\Otdely\ZUR\ГКН"
$BasePath = "\\serv\Otdely\ZUR\ПРОЕКТЫ\Поломошнов А.А\XML_sort_base_PS"
$RezultatPath = "\\serv\Otdely\ZUR\ГКН"
$otchet="\\serv\Otdely\ZUR\ПРОЕКТЫ\Поломошнов А.А\XML_sort\otchet.csv"
# задаем дату и время:
$d=get-date -uformat "%Y-%m-%d"
$t=get-date -uformat "%H:%M"
############################################################################################################
#######----------------------------------------------------------------------------------------------------#
# создаем функци ведения лога:
function moves_log($message) {
if (!(test-path "$RezultatPath\moves_log.csv")) {Add-Content -Path "$RezultatPath\moves_log.csv" -Value "дата;время;номер документа;тип документа;кадастровый номер;актуальность;исходный файл;->;результат файл"}
Add-Content -Path "$RezultatPath\moves_log.csv" -Value $message
}
#######----------------------------------------------------------------------------------------------------#
# создаем функци ведения лога:
function error_log($message) {
if (!(test-path "$RezultatPath\error_log.csv")) {Add-Content -Path "$RezultatPath\error_log.csv" -Value "дата;время;исходный файл;сообщение об ошибке"}
Add-Content -Path "$RezultatPath\error_log.csv" -Value $message
}
#######----------------------------------------------------------------------------------------------------#
# создаем функцию распаковки архивов:
function Extract-Zip {
param([string]$zipfilename, [string] $destination)
if(test-path($zipfilename)) {
$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
$destinationFolder = $shellApplication.NameSpace($destination)
$destinationFolder.CopyHere($zipPackage.Items())
}
}
#######----------------------------------------------------------------------------------------------------#
# создаем функцию для известного документа, но не известной версии (не описанной в скрипте)
function YesDocType_NoDocVers {
if (!(test-path "$pwd\$DocTypeRus\$DocVers\")) {new-item -path $RezultatPath -name "проблемные\$DocTypeRus\$DocVers" -type directory -force | Out-Null}
move-item -path "$sSourceXmlFile" -destination "$RezultatPath\проблемные\$DocTypeRus\$DocVers" #перемещаем
$ErrorText = "документ $DocTypeRus версии $DocVers не может быть обработан"
Write-Host "--------------"
Write-Host "$ErrorText" -ForegroundColor Yellow
error_log("$d;$t;$($sSourceXmlFile.name);$ErrorText")
}
#######----------------------------------------------------------------------------------------------------#
############################################################################################################
# обнуляем переменные:
Remove-Variable zip -ErrorAction SilentlyContinue
# Получаем объекты представляющие файлы в переменную $ZipFiles
# $ZipFiles = Get-ChildItem $ZipPath\* -recurse -Include *.zip
$ZipFiles = Get-ChildItem $ZipPath\* -Include *.zip
# Проверка на пустое значение (если 1 файл, то не записывается)
if ($ZipFiles.count -ge "2") {$ZipFiles_count = $ZipFiles.count} else {$ZipFiles_count = 1}
if ($ZipFiles -eq $null) {
Write-Host "не найдены zip-архивы. поищем xml..."-ForegroundColor Yellow; start-sleep 5
} else {
# Распаковываем каждый zip файл из $ZipPath:
ForEach ($sSourceZipFile in $ZipFiles) {
$zip++
Clear-Host
Write-Host "обрабатываем файл: $zip из $ZipFiles_count ($($sSourceZipFile.name))"
Write-Host "-------------------------------------------------------------------------------"
# извлекаем из архива
extract-zip "$sSourceZipFile" "$ZipPath"
Remove-Item "$sSourceZipFile"
start-sleep -m 500
}
}
# обнуляем переменные:
Remove-Variable xml,NamePlus,FilesEach,KPT_Each,Vidimus_Each,Vidimus_KP_Each,EGRP_Each,NoData_Each,OTKAZ_Each -ErrorAction SilentlyContinue
# Получаем объекты представляющие файлы в переменную $XmlFiles
$XmlFiles = Get-ChildItem $ZipPath\* -Include *.xml
# Проверка на пустое значение (если 1 файл, то не записывается)
if ($XmlFiles.count -ge "2") {$XmlFiles_count = $XmlFiles.count} else {$XmlFiles_count = 1}
if ($XmlFiles -eq $null) {
Write-Host "не найдены xml-файлы. выход..." -ForegroundColor Yellow; start-sleep 5
} else {
# Обрабатываем каждый xml файл из $ZipPath:
ForEach ($sSourceXmlFile in $XmlFiles) {
$xml++
Clear-Host
Write-Host "обрабатываем файл: $xml из $XmlFiles_count ($($sSourceXmlFile.name))"
Write-Host "-------------------------------------------------------------------------------"
# обнуляем переменные:
Remove-Variable sSubParcels,sDocNumber,sDateCreateDoc,sCadastralNumber -ErrorAction SilentlyContinue
Remove-Variable Cad_Region,Cad_Rayion,Cad_Kvartal,Cad_Uchastok -ErrorAction SilentlyContinue
Remove-Variable ErrorText,DocType,DocVers,NoDocVers -ErrorAction SilentlyContinue
# проверяем первую строку на пустоту: (был раньше такой косяк у росреестра)
if (!(get-content -path $sSourceXmlFile -totalcount 1)) {
Write-Host "найдена пустая строка!! дождитесь пока исправим.." -ForegroundColor Yellow
$tmp = get-content $sSourceXmlFile
$tmp[0] = $null
$tmp | set-content $sSourceXmlFile -Encoding utf8
}
# создаем новый объект как xml
$oXmlDocument = New-Object -TypeName System.Xml.XmlDocument
# загружаем файл в переменную обработки
$oXmlDocument.load($sSourceXmlFile)
# разбить на подстроки по / и берем нужные подстроки. в итоге имеем тип документа и версию
$DocType = $oXmlDocument."xml-stylesheet".split("/")[6]
$DocVers = $oXmlDocument."xml-stylesheet".split("/")[7]
if ($DocType -ne $null) {
# проверка на допустимые типы документа
Switch ($DocType) {
############################################################################################################
KPT { # КПТ
$DocTypeRus = "КПТ"
Write-Host "тип документа: `t `t $DocTypeRus"
Switch ($DocVers) {
###############------------------------------------------------------------------------------------#
"01" { # https://portal.rosreestr.ru/xsl/GKN/KPT/01/common.xsl
$KPT_Each++
# получаем значения в переменные #--------------------------------------------------------------
$sDocNumber = $oXmlDocument.Region_Cadastr.Package.Certification_Doc.Number
$sDateCreateDoc = $oXmlDocument.Region_Cadastr.Package.Certification_Doc.Date
$sCadastralNumber = $oXmlDocument.Region_Cadastr.Package.Federal.Cadastral_Regions.Cadastral_Region.Cadastral_Districts.Cadastral_District.Cadastral_Blocks.Cadastral_Block.CadastralNumber
# ----------------------------------------------------------------------------------------------
# убираем пробелы в кадастровом номере
$sCadastralNumber = $sCadastralNumber -replace " "
# разбить кадастровый номер на подстроки по ":" в итоге имеем следующие переменные:
$Cad_Region = $sCadastralNumber.split(":")[0]
$Cad_Rayion = $sCadastralNumber.split(":")[1]
$Cad_Kvartal = $sCadastralNumber.split(":")[2]
# загрузим регионы в массив:
$BaseRegions = Get-Content "$BasePath\regions.txt" | %{ConvertFrom-StringData -StringData $_}
$Region = $BaseRegions[$Cad_Region]."r$Cad_Region" # регион Русскми буквами $Region (значение [строки] после "rРЕГИОН=")
# загрузим районы в массив:
if (!(test-path "$BasePath\$Cad_Region`_rayion.txt")) {
$ErrorText = "отсутствует перечень районов по $Cad_Region региону ($Region)"
} else {
$BaseRayions = Get-Content "$BasePath\$Cad_Region`_rayion.txt" | %{ConvertFrom-StringData -StringData $_}
$Rayion = $BaseRayions[$Cad_Rayion]."r$Cad_Rayion" # район Русскми буквами $Rayion
# каталог файла-результата:
$OutPath = "$RezultatPath\$Cad_Region $Region\$Cad_Region-$Cad_Rayion $Rayion\$Cad_Region-$Cad_Rayion-$Cad_Kvartal"
# имя файла-результата:
$OutName = "$DocTypeRus на $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal от $sDateCreateDoc`.xml"
# при перемещении файла запишем в лог:
$Outlog = "$d;$t;$sDocNumber;$DocTypeRus;$sCadastralNumber;$sDateCreateDoc;$($sSourceXmlFile.name);->;"
}
}# /закончили с 1 версией КПТ
###############------------------------------------------------------------------------------------#
"07" { # https://portal.rosreestr.ru/xsl/GKN/KPT/07/common.xsl
$KPT_Each++
# получаем значения в переменные #--------------------------------------------------------------
$sDocNumber = $oXmlDocument.Region_Cadastr.Package.Certification_Doc.Number
$sDateCreateDoc = $oXmlDocument.Region_Cadastr.Package.Certification_Doc.Date
$sCadastralNumber = $oXmlDocument.Region_Cadastr.Package.Federal.Cadastral_Regions.Cadastral_Region.Cadastral_Districts.Cadastral_District.Cadastral_Blocks.Cadastral_Block.CadastralNumber
# ----------------------------------------------------------------------------------------------
# убираем пробелы в кадастровом номере
$sCadastralNumber = $sCadastralNumber -replace " "
# разбить кадастровый номер на подстроки по ":" в итоге имеем следующие переменные:
$Cad_Region = $sCadastralNumber.split(":")[0]
$Cad_Rayion = $sCadastralNumber.split(":")[1]
$Cad_Kvartal = $sCadastralNumber.split(":")[2]
# загрузим регионы в массив:
$BaseRegions = Get-Content "$BasePath\regions.txt" | %{ConvertFrom-StringData -StringData $_}
$Region = $BaseRegions[$Cad_Region]."r$Cad_Region" # регион Русскми буквами $Region (значение [строки] после "rРЕГИОН=")
# загрузим районы в массив:
if (!(test-path "$BasePath\$Cad_Region`_rayion.txt")) {
$ErrorText = "отсутствует перечень районов по $Cad_Region региону ($Region)"
} else {
$BaseRayions = Get-Content "$BasePath\$Cad_Region`_rayion.txt" | %{ConvertFrom-StringData -StringData $_}
$Rayion = $BaseRayions[$Cad_Rayion]."r$Cad_Rayion" # район Русскми буквами $Rayion
# каталог файла-результата:
$OutPath = "$RezultatPath\$Cad_Region $Region\$Cad_Region-$Cad_Rayion $Rayion\$Cad_Region-$Cad_Rayion-$Cad_Kvartal"
# имя файла-результата:
$OutName = "$DocTypeRus на $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal от $sDateCreateDoc`.xml"
# при перемещении файла запишем в лог:
$Outlog = "$d;$t;$sDocNumber;$DocTypeRus;$sCadastralNumber;$sDateCreateDoc;$($sSourceXmlFile.name);->;"
}
}# /закончили с 7 версией КПТ
###############------------------------------------------------------------------------------------#
"08" { # https://portal.rosreestr.ru/xsl/GKN/KPT/08/common.xsl
$KPT_Each++
# получаем значения в переменные #--------------------------------------------------------------
$sDocNumber = $oXmlDocument.Region_Cadastr.Package.Certification_Doc.Number
$sDateCreateDoc = $oXmlDocument.Region_Cadastr.Package.Certification_Doc.Date
$sCadastralNumber = $oXmlDocument.Region_Cadastr.Package.Cadastral_Blocks.Cadastral_Block.CadastralNumber
# ----------------------------------------------------------------------------------------------
# убираем пробелы в кадастровом номере
$sCadastralNumber = $sCadastralNumber -replace " "
# разбить кадастровый номер на подстроки по ":" в итоге имеем следующие переменные:
$Cad_Region = $sCadastralNumber.split(":")[0]
$Cad_Rayion = $sCadastralNumber.split(":")[1]
$Cad_Kvartal = $sCadastralNumber.split(":")[2]
# загрузим регионы в массив:
$BaseRegions = Get-Content "$BasePath\regions.txt" | %{ConvertFrom-StringData -StringData $_}
$Region = $BaseRegions[$Cad_Region]."r$Cad_Region" # регион Русскми буквами $Region (значение [строки] после "rРЕГИОН=")
# загрузим районы в массив:
if (!(test-path "$BasePath\$Cad_Region`_rayion.txt")) {
$ErrorText = "отсутствует перечень районов по $Cad_Region региону ($Region)"
} else {
$BaseRayions = Get-Content "$BasePath\$Cad_Region`_rayion.txt" | %{ConvertFrom-StringData -StringData $_}
$Rayion = $BaseRayions[$Cad_Rayion]."r$Cad_Rayion" # район Русскми буквами $Rayion
# каталог файла-результата:
$OutPath = "$RezultatPath\$Cad_Region $Region\$Cad_Region-$Cad_Rayion $Rayion\$Cad_Region-$Cad_Rayion-$Cad_Kvartal"
# имя файла-результата:
$OutName = "$DocTypeRus на $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal от $sDateCreateDoc`.xml"
# при перемещении файла запишем в лог:
$Outlog = "$d;$t;$sDocNumber;$DocTypeRus;$sCadastralNumber;$sDateCreateDoc;$($sSourceXmlFile.name);->;"
}
}# /закончили с 8 версией КПТ
###############------------------------------------------------------------------------------------#
Default {YesDocType_NoDocVers $sSourceFile; $NoDocVers++}
}# /закончили с перебором версий КПТ
}# /закончили с КПТ
############################################################################################################
Vidimus { # выписка
$DocTypeRus = "КВЗУ"
Write-Host "тип документа: `t `t $DocTypeRus"
Switch ($DocVers) {
###############------------------------------------------------------------------------------------#
"03" { # https://portal.rosreestr.ru/xsl/GKN/Vidimus/03/common.xsl совпадает с 4
$Vidimus_Each++ # счетчик
# получаем значения в переменные ---------------------------------------------------------------
$sDocNumber = $oXmlDocument.Region_Cadastr_Vidimus_KV.Package.Certification_Doc.Number
$sDateCreateDoc = $oXmlDocument.Region_Cadastr_Vidimus_KV.Package.Certification_Doc.Date
$sCadastralNumber = $oXmlDocument.Region_Cadastr_Vidimus_KV.Package.Federal.Cadastral_Regions.Cadastral_Region.Cadastral_Districts.Cadastral_District.Cadastral_Blocks.Cadastral_Block.Parcels.Parcel.CadastralNumber
# ----------------------------------------------------------------------------------------------
# убираем пробелы в кадастровом номере
$sCadastralNumber = $sCadastralNumber -replace " ",""
# разбить кадастровый номер на подстроки по ":" в итоге имеем следующие переменные:
$Cad_Region = $sCadastralNumber.split(":")[0]
$Cad_Rayion = $sCadastralNumber.split(":")[1]
$Cad_Kvartal = $sCadastralNumber.split(":")[2]
$Cad_Uchastok = $sCadastralNumber.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"}
}
# загрузим регионы в массив:
$BaseRegions = Get-Content "$BasePath\regions.txt" | %{ConvertFrom-StringData -StringData $_}
$Region = $BaseRegions[$Cad_Region]."r$Cad_Region" # регион Русскми буквами $Region (значение [строки] после "rРЕГИОН=")
# загрузим районы в массив:
if (!(test-path "$BasePath\$Cad_Region`_rayion.txt")) {
$ErrorText = "отсутствует перечень районов по $Cad_Region региону ($Region)"
} else {
$BaseRayions = Get-Content "$BasePath\$Cad_Region`_rayion.txt" | %{ConvertFrom-StringData -StringData $_}
$Rayion = $BaseRayions[$Cad_Rayion]."r$Cad_Rayion" # район Русскми буквами $Rayion
# каталог файла-результата:
$OutPath = "$RezultatPath\$Cad_Region $Region\$Cad_Region-$Cad_Rayion $Rayion\$Cad_Region-$Cad_Rayion-$Cad_Kvartal\$Cad_Uchastok"
# имя файла-результата:
$OutName = "$DocTypeRus на $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal`-$Cad_Uchastok от $sDateCreateDoc`.xml"
# при перемещении файла запишем в лог:
$Outlog = "$d;$t;$sDocNumber;$DocTypeRus;$sCadastralNumber;$sDateCreateDoc;$($sSourceXmlFile.name);->;"
}
}# /закончили с 3 версией КВЗУ
###############------------------------------------------------------------------------------------#
"04" { # https://portal.rosreestr.ru/xsl/GKN/Vidimus/04/common.xsl
$Vidimus_Each++ # счетчик
# получаем значения в переменные ---------------------------------------------------------------
$sDocNumber = $oXmlDocument.Region_Cadastr_Vidimus_KV.Package.Certification_Doc.Number
$sDateCreateDoc = $oXmlDocument.Region_Cadastr_Vidimus_KV.Package.Certification_Doc.Date
$sCadastralNumber = $oXmlDocument.Region_Cadastr_Vidimus_KV.Package.Federal.Cadastral_Regions.Cadastral_Region.Cadastral_Districts.Cadastral_District.Cadastral_Blocks.Cadastral_Block.Parcels.Parcel.CadastralNumber
# ----------------------------------------------------------------------------------------------
# убираем пробелы в кадастровом номере
$sCadastralNumber = $sCadastralNumber -replace " ",""
# разбить кадастровый номер на подстроки по ":" в итоге имеем следующие переменные:
$Cad_Region = $sCadastralNumber.split(":")[0]
$Cad_Rayion = $sCadastralNumber.split(":")[1]
$Cad_Kvartal = $sCadastralNumber.split(":")[2]
$Cad_Uchastok = $sCadastralNumber.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"}
}
# загрузим регионы в массив:
$BaseRegions = Get-Content "$BasePath\regions.txt" | %{ConvertFrom-StringData -StringData $_}
$Region = $BaseRegions[$Cad_Region]."r$Cad_Region" # регион Русскми буквами $Region (значение [строки] после "rРЕГИОН=")
# загрузим районы в массив:
if (!(test-path "$BasePath\$Cad_Region`_rayion.txt")) {
$ErrorText = "отсутствует перечень районов по $Cad_Region региону ($Region)"
} else {
$BaseRayions = Get-Content "$BasePath\$Cad_Region`_rayion.txt" | %{ConvertFrom-StringData -StringData $_}
$Rayion = $BaseRayions[$Cad_Rayion]."r$Cad_Rayion" # район Русскми буквами $Rayion
# каталог файла-результата:
$OutPath = "$RezultatPath\$Cad_Region $Region\$Cad_Region-$Cad_Rayion $Rayion\$Cad_Region-$Cad_Rayion-$Cad_Kvartal\$Cad_Uchastok"
# имя файла-результата:
$OutName = "$DocTypeRus на $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal`-$Cad_Uchastok от $sDateCreateDoc`.xml"
# при перемещении файла запишем в лог:
$Outlog = "$d;$t;$sDocNumber;$DocTypeRus;$sCadastralNumber;$sDateCreateDoc;$($sSourceXmlFile.name);->;"
}
}# /закончили с 4 версией КВЗУ
###############------------------------------------------------------------------------------------#
"05" { # https://portal.rosreestr.ru/xsl/GKN/Vidimus/05/common.xsl
$Vidimus_Each++ # счетчик
# получаем значения в переменные ---------------------------------------------------------------
$sDocNumber = $oXmlDocument.Region_Cadastr_Vidimus_KV.Package.Certification_Doc.Number
$sDateCreateDoc = $oXmlDocument.Region_Cadastr_Vidimus_KV.Package.Certification_Doc.Date
$sCadastralNumber = $oXmlDocument.Region_Cadastr_Vidimus_KV.Package.Parcels.Parcel.CadastralNumber
# считаем сколько раз нам попадается .SubParcel (части участка)
if ($oXmlDocument.Region_Cadastr_Vidimus_KV.Package.Parcels.Parcel.SubParcels -ne $null) {
$oXmlDocument.Region_Cadastr_Vidimus_KV.Package.Parcels.Parcel.SubParcels | ForEach-Object -Process {
$_.SubParcel | ForEach-Object -Process {$sSubParcels++}
}
# выровняем значение частей до 4 знаков
Switch ($sSubParcels.length) {
1 {$sSubParcels = "000$sSubParcels"}
2 {$sSubParcels = "00$sSubParcels"}
3 {$sSubParcels = "0$sSubParcels"}
}
}
# ----------------------------------------------------------------------------------------------
# убираем пробелы в кадастровом номере
$sCadastralNumber = $sCadastralNumber -replace " ",""
# разбить кадастровый номер на подстроки по ":" в итоге имеем следующие переменные:
$Cad_Region = $sCadastralNumber.split(":")[0]
$Cad_Rayion = $sCadastralNumber.split(":")[1]
$Cad_Kvartal = $sCadastralNumber.split(":")[2]
$Cad_Uchastok = $sCadastralNumber.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"}
}
# загрузим регионы в массив:
$BaseRegions = Get-Content "$BasePath\regions.txt" | %{ConvertFrom-StringData -StringData $_}
$Region = $BaseRegions[$Cad_Region]."r$Cad_Region" # регион Русскми буквами $Region (значение [строки] после "rРЕГИОН=")
# загрузим районы в массив:
if (!(test-path "$BasePath\$Cad_Region`_rayion.txt")) {
$ErrorText = "отсутствует перечень районов по $Cad_Region региону ($Region)"
} else {
$BaseRayions = Get-Content "$BasePath\$Cad_Region`_rayion.txt" | %{ConvertFrom-StringData -StringData $_}
$Rayion = $BaseRayions[$Cad_Rayion]."r$Cad_Rayion" # район Русскми буквами $Rayion
# каталог файла-результата:
$OutPath = "$RezultatPath\$Cad_Region $Region\$Cad_Region-$Cad_Rayion $Rayion\$Cad_Region-$Cad_Rayion-$Cad_Kvartal\$Cad_Uchastok"
# имя файла-результата:
$OutName = "$DocTypeRus на $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal`-$Cad_Uchastok от $sDateCreateDoc`.xml"
# при перемещении файла запишем в лог:
$Outlog = "$d;$t;$sDocNumber;$DocTypeRus;$sCadastralNumber;$sDateCreateDoc;$($sSourceXmlFile.name);->;"
}
}# /закончили с 5 версией КВЗУ
###############------------------------------------------------------------------------------------#
Default {YesDocType_NoDocVers $sSourceFile; $NoDocVers++}
}# /закончили с перебором версий КВЗУ
}# /закончили с КВЗУ
############################################################################################################
Vidimus_KP {
$DocTypeRus = "КПЗУ"
Write-Host "тип документа: `t `t КПЗУ"
Switch ($DocVers) {
###############------------------------------------------------------------------------------------#
"03" { # https://portal.rosreestr.ru/xsl/GKN/Vidimus_KP/03/common.xsl
$Vidimus_KP_Each++ # счетчик
# получаем значения в переменные ---------------------------------------------------------------
$sDocNumber = $oXmlDocument.Region_Cadastr_Vidimus_KP.Package.Certification_Doc.Number
$sDateCreateDoc = $oXmlDocument.Region_Cadastr_Vidimus_KP.Package.Certification_Doc.Date
$sCadastralNumber = $oXmlDocument.Region_Cadastr_Vidimus_KP.Package.Federal.Cadastral_Regions.Cadastral_Region.Cadastral_Districts.Cadastral_District.Cadastral_Blocks.Cadastral_Block.Parcels.Parcel.CadastralNumber
# ----------------------------------------------------------------------------------------------
# убираем пробелы в кадастровом номере
$sCadastralNumber = $sCadastralNumber -replace " ",""
# разбить кадастровый номер на подстроки по ":" в итоге имеем следующие переменные:
$Cad_Region = $sCadastralNumber.split(":")[0]
$Cad_Rayion = $sCadastralNumber.split(":")[1]
$Cad_Kvartal = $sCadastralNumber.split(":")[2]
$Cad_Uchastok = $sCadastralNumber.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"}
}
# загрузим регионы в массив:
$BaseRegions = Get-Content "$BasePath\regions.txt" | %{ConvertFrom-StringData -StringData $_}
$Region = $BaseRegions[$Cad_Region]."r$Cad_Region" # регион Русскми буквами $Region (значение [строки] после "rРЕГИОН=")
# загрузим районы в массив:
if (!(test-path "$BasePath\$Cad_Region`_rayion.txt")) {
$ErrorText = "отсутствует перечень районов по $Cad_Region региону ($Region)"
} else {
$BaseRayions = Get-Content "$BasePath\$Cad_Region`_rayion.txt" | %{ConvertFrom-StringData -StringData $_}
$Rayion = $BaseRayions[$Cad_Rayion]."r$Cad_Rayion" # район Русскми буквами $Rayion
# каталог файла-результата:
$OutPath = "$RezultatPath\$Cad_Region $Region\$Cad_Region-$Cad_Rayion $Rayion\$Cad_Region-$Cad_Rayion-$Cad_Kvartal\$Cad_Uchastok"
# имя файла-результата:
$OutName = "$DocTypeRus на $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal`-$Cad_Uchastok от $sDateCreateDoc`.xml"
# при перемещении файла запишем в лог:
$Outlog = "$d;$t;$sDocNumber;$DocTypeRus;$sCadastralNumber;$sDateCreateDoc;$($sSourceXmlFile.name);->;"
}
}# /закончили с 3 версийе КПЗУ
###############------------------------------------------------------------------------------------#
Default {YesDocType_NoDocVers $sSourceFile; $NoDocVers++}
}# /закончили с перебором версий КПЗУ
}# /закончили с КПЗУ
############################################################################################################
RefusalNoData {
$DocTypeRus = "Уведомление"
Write-Host "тип документа: `t `t $DocTypeRus"
Switch ($DocVers) {
###############------------------------------------------------------------------------------------#
"02" { # https://portal.rosreestr.ru/xsl/GKN/RefusalNoData/03/common.xsl
$NoData_Each++ # счетчик
# получаем значения в переменные----------------------------------------------------------------
$sDocNumber = $oXmlDocument.Refusal_GZK_Realty.Title.Rubric.Number
$sDateCreateDoc = $oXmlDocument.Refusal_GZK_Realty.Title.Rubric.Date
# ----------------------------------------------------------------------------------------------
# обрезать дату документа до года
$DateCreateDocYYYY = $sDateCreateDoc.Substring(0,($sDateCreateDoc.Length -6))
# заменить невозможные символы в имени файла
$DocNumber = $sDocNumber -replace "/","-"
# каталог файла-результата:
$OutPath = "$RezultatPath\отсутствие сведений\$DateCreateDocYYYY"
# имя файла-результата:
$OutName = "$DocTypeRus $DocNumber от $sDateCreateDoc`.xml"
# при перемещении файла запишем в лог:
$Outlog = "$d;$t;$sDocNumber;$DocTypeRus;$sCadastralNumber;$sDateCreateDoc;$($sSourceXmlFile.name);->;"
}#/закончили с 2 версией уведомлений
###############------------------------------------------------------------------------------------#
"03" { # https://portal.rosreestr.ru/xsl/GKN/RefusalNoData/03/common.xsl
$NoData_Each++ # счетчик
# получаем значения в переменные----------------------------------------------------------------
$sDocNumber = $oXmlDocument.Refusal_GZK_Realty.Title.Rubric.Number
$sDateCreateDoc = $oXmlDocument.Refusal_GZK_Realty.Title.Rubric.Date
# ----------------------------------------------------------------------------------------------
# обрезать дату документа до года
$DateCreateDocYYYY = $sDateCreateDoc.Substring(0,($sDateCreateDoc.Length -6))
# заменить невозможные символы в имени файла
$DocNumber = $sDocNumber -replace "/","-"
# каталог файла-результата:
$OutPath = "$RezultatPath\отсутствие сведений\$DateCreateDocYYYY"
# имя файла-результата:
$OutName = "$DocTypeRus $DocNumber от $sDateCreateDoc`.xml"
# при перемещении файла запишем в лог:
$Outlog = "$d;$t;$sDocNumber;$DocTypeRus;$sCadastralNumber;$sDateCreateDoc;$($sSourceXmlFile.name);->;"
}# /закончили с 3 версией уведомлений
###############------------------------------------------------------------------------------------#
Default {YesDocType_NoDocVers $sSourceFile; $NoDocVers++}
}# /закончили с передобром версий уведомления
}# /закончили с уведомлениями
############################################################################################################
RefusalByDecision {
$DocTypeRus = "Отказ"
Write-Host "тип документа: `t `t $DocTypeRus"
Switch ($DocVers) {
###############------------------------------------------------------------------------------------#
"01" { # https://portal.rosreestr.ru/xsl/GKN/RefusalNoData/03/common.xsl
$OTKAZ_Each++ # счетчик
# получаем значения в переменные----------------------------------------------------------------
$sDocNumber = $oXmlDocument.Decision.DocNum
$sDateCreateDoc = $oXmlDocument.Decision.Date
# ----------------------------------------------------------------------------------------------
# обрезать дату документа до года
$DateCreateDocYYYY = $sDateCreateDoc.Substring(0,($sDateCreateDoc.Length -6))
# заменить невозможные символы в имени файла
$DocNumber = $sDocNumber -replace "/","-"
# каталог файла-результата:
$OutPath = "$RezultatPath\отказы\$DateCreateDocYYYY"
# имя файла-результата:
$OutName = "$DocTypeRus $DocNumber от $sDateCreateDoc`.xml"
# при перемещении файла запишем в лог:
$Outlog = "$d;$t;$sDocNumber;$DocTypeRus;$sCadastralNumber;$sDateCreateDoc;$($sSourceXmlFile.name);->;"
}# /закончили с 1 версией отказов
###############------------------------------------------------------------------------------------#
Default {YesDocType_NoDocVers $sSourceFile; $NoDocVers++}
}# /закончили с перебором версий отказов
}# /закончили с отказами
############################################################################################################
Reestr_Extract_Object {
$DocTypeRus = "ЕГРП"
Write-Host "тип документа: `t `t $DocTypeRus"
Switch ($DocVers) {
###############------------------------------------------------------------------------------------#
"02" { # https://portal.rosreestr.ru/xsl/EGRP/Reestr_Extract_Object/02/Common.xsl
$EGRP_Each++ # счетчик
# получаем значения в переменные----------------------------------------------------------------
$sDocNumber = $oXmlDocument.Reestr_Extract_Object.ReestrExtract.ExtractNumber
$sDateCreateDoc = $oXmlDocument.Reestr_Extract_Object.ReestrExtract.ExtractDate
$sCadastralNumber = $oXmlDocument.Reestr_Extract_Object.ReestrExtract.ExtractObjectRight.ObjectRight.CadastralNumber
# ----------------------------------------------------------------------------------------------
# убираем пробелы в кажастровом номере
$sCadastralNumber = $sCadastralNumber -replace " ",""
# разбить кадастровый номер на подстроки по ":" в итоге имеем следующие переменные:
$Cad_Region = $sCadastralNumber.split(":")[0]
$Cad_Rayion = $sCadastralNumber.split(":")[1]
$Cad_Kvartal = $sCadastralNumber.split(":")[2]
$Cad_Uchastok = $sCadastralNumber.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"}
}
# загрузим регионы в массив:
$BaseRegions = Get-Content "$BasePath\regions.txt" | %{ConvertFrom-StringData -StringData $_}
$Region = $BaseRegions[$Cad_Region]."r$Cad_Region" # регион Русскми буквами $Region (значение [строки] после "rРЕГИОН=")
# загрузим районы в массив:
if (!(test-path "$BasePath\$Cad_Region`_rayion.txt")) {
$ErrorText = "отсутствует перечень районов по $Cad_Region региону ($Region)"
} else {
$BaseRayions = Get-Content "$BasePath\$Cad_Region`_rayion.txt" | %{ConvertFrom-StringData -StringData $_}
$Rayion = $BaseRayions[$Cad_Rayion]."r$Cad_Rayion" # район Русскми буквами $Rayion
# каталог файла-результата:
$OutPath = "$RezultatPath\$Cad_Region $Region\$Cad_Region-$Cad_Rayion $Rayion\$Cad_Region-$Cad_Rayion-$Cad_Kvartal\$Cad_Uchastok"
# имя файла-результата:
$OutName = "$DocTypeRus на $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal`-$Cad_Uchastok от $sDateCreateDoc`.xml"
# при перемещении файла запишем в лог:
$Outlog = "$d;$t;$sDocNumber;$DocTypeRus;$sCadastralNumber;$sDateCreateDoc;$($sSourceXmlFile.name);->;"
}
}# /закончили с 2 версией ЕГРП
###############------------------------------------------------------------------------------------#
"03" { # https://portal.rosreestr.ru/xsl/EGRP/Reestr_Extract_Object/03/Common.xsl
$EGRP_Each++ # счетчик
# получаем значения в переменные----------------------------------------------------------------
$sDocNumber = $oXmlDocument.Extract.ReestrExtract.DeclarAttribute.ExtractNumber
$sDateCreateDoc = $oXmlDocument.Extract.ReestrExtract.DeclarAttribute.ExtractDate
$sCadastralNumber = $oXmlDocument.Extract.ReestrExtract.ExtractObjectRight.ExtractObject.ObjectRight.ObjectDesc.CadastralNumber
# ----------------------------------------------------------------------------------------------
# убираем пробелы в кажастровом номере
$sCadastralNumber = $sCadastralNumber -replace " ",""
# разбить кадастровый номер на подстроки по ":" в итоге имеем следующие переменные:
$Cad_Region = $sCadastralNumber.split(":")[0]
$Cad_Rayion = $sCadastralNumber.split(":")[1]
$Cad_Kvartal = $sCadastralNumber.split(":")[2]
$Cad_Uchastok = $sCadastralNumber.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"}
}
# загрузим регионы в массив:
$BaseRegions = Get-Content "$BasePath\regions.txt" | %{ConvertFrom-StringData -StringData $_}
$Region = $BaseRegions[$Cad_Region]."r$Cad_Region" # регион Русскми буквами $Region (значение [строки] после "rРЕГИОН=")
# загрузим районы в массив:
if (!(test-path "$BasePath\$Cad_Region`_rayion.txt")) {
$ErrorText = "отсутствует перечень районов по $Cad_Region региону ($Region)"
} else {
$BaseRayions = Get-Content "$BasePath\$Cad_Region`_rayion.txt" | %{ConvertFrom-StringData -StringData $_}
$Rayion = $BaseRayions[$Cad_Rayion]."r$Cad_Rayion" # район Русскми буквами $Rayion
# каталог файла-результата:
$OutPath = "$RezultatPath\$Cad_Region $Region\$Cad_Region-$Cad_Rayion $Rayion\$Cad_Region-$Cad_Rayion-$Cad_Kvartal\$Cad_Uchastok"
# имя файла-результата:
$OutName = "$DocTypeRus на $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal`-$Cad_Uchastok от $sDateCreateDoc`.xml"
# при перемещении файла запишем в лог:
$Outlog = "$d;$t;$sDocNumber;$DocTypeRus;$sCadastralNumber;$sDateCreateDoc;$($sSourceXmlFile.name);->;"
}
}# /закончили с 3 версией ЕГРП
###############------------------------------------------------------------------------------------#
"04" { # https://portal.rosreestr.ru/xsl/EGRP/Reestr_Extract_Object/04/Common.xsl
$EGRP_Each++ # счетчик
# получаем значения в переменные----------------------------------------------------------------
$sDocNumber = $oXmlDocument.Extract.ReestrExtract.DeclarAttribute.ExtractNumber
$sDateCreateDoc = $oXmlDocument.Extract.ReestrExtract.DeclarAttribute.ExtractDate
$sCadastralNumber = $oXmlDocument.Extract.ReestrExtract.ExtractObjectRight.ExtractObject.ObjectRight.ObjectDesc.CadastralNumber
# ----------------------------------------------------------------------------------------------
# убираем пробелы в кажастровом номере
$sCadastralNumber = $sCadastralNumber -replace " ",""
# разбить кадастровый номер на подстроки по ":" в итоге имеем следующие переменные:
$Cad_Region = $sCadastralNumber.split(":")[0]
$Cad_Rayion = $sCadastralNumber.split(":")[1]
$Cad_Kvartal = $sCadastralNumber.split(":")[2]
$Cad_Uchastok = $sCadastralNumber.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"}
}
# загрузим регионы в массив:
$BaseRegions = Get-Content "$BasePath\regions.txt" | %{ConvertFrom-StringData -StringData $_}
$Region = $BaseRegions[$Cad_Region]."r$Cad_Region" # регион Русскми буквами $Region (значение [строки] после "rРЕГИОН=")
# загрузим районы в массив:
if (!(test-path "$BasePath\$Cad_Region`_rayion.txt")) {
$ErrorText = "отсутствует перечень районов по $Cad_Region региону ($Region)"
} else {
$BaseRayions = Get-Content "$BasePath\$Cad_Region`_rayion.txt" | %{ConvertFrom-StringData -StringData $_}
$Rayion = $BaseRayions[$Cad_Rayion]."r$Cad_Rayion" # район Русскми буквами $Rayion
# каталог файла-результата:
$OutPath = "$RezultatPath\$Cad_Region $Region\$Cad_Region-$Cad_Rayion $Rayion\$Cad_Region-$Cad_Rayion-$Cad_Kvartal\$Cad_Uchastok"
# имя файла-результата:
$OutName = "$DocTypeRus на $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal`-$Cad_Uchastok от $sDateCreateDoc`.xml"
# при перемещении файла запишем в лог:
$Outlog = "$d;$t;$sDocNumber;$DocTypeRus;$sCadastralNumber;$sDateCreateDoc;$($sSourceXmlFile.name);->;"
}
}# /закончили с 3 версией ЕГРП
###############------------------------------------------------------------------------------------#
Default {YesDocType_NoDocVers $sSourceFile; $NoDocVers++}
###############------------------------------------------------------------------------------------#
}# /закончили с перебором версий ЕГРП
}# /закончили с ЕГРП
############################################################################################################
Default {$ErrorText = "тип документа: `t $DocType не известен"}
############################################################################################################
}# /закончили с перебором типа документов
# switch закрыт
}else{$ErrorText = "не удалось определить тип документа"}
###############------------------------------------------------------------------------------------#
# проверяем на наличие ошибок
if ($ErrorText -ne $null) {
Write-Host "--------------"
Write-Host "ошибка:"
Write-Host "$ErrorText" -ForegroundColor Yellow
error_log("$d;$t;$($sSourceXmlFile.name);$ErrorText")
start-sleep 5
# обнуляем переменные:
Remove-Variable sSubParcels,sDocNumber,sDateCreateDoc,sCadastralNumber -ErrorAction SilentlyContinue
Remove-Variable Cad_Region,Region,Cad_Rayion,Rayion,Cad_Kvartal,Cad_Uchastok -ErrorAction SilentlyContinue
Remove-Variable ErrorText,DocType,DocVers,NoDocVers -ErrorAction SilentlyContinue
#
$OutName = $($sSourceXmlFile.name)
$OutPath = "$RezultatPath\проблемные"
$Outlog = "$d;$t;$sDocNumber;$DocTypeRus;$sCadastralNumber;$sDateCreateDoc;$($sSourceXmlFile.name);->;"
}# /закончили с проверкой на ошибки
###############------------------------------------------------------------------------------------#
# если не было не опознанных версий
if ($NoDocVers -eq $null) {
# выводим информацию на экран
if ($sDocNumber -ne $null) {Write-Host "номер документа:" `t $sDocNumber}
if ($sDateCreateDoc -ne $null) {Write-Host "дата формирования:" `t $sDateCreateDoc}
if ($sCadastralNumber -ne $null) {Write-Host "кадастровый номер:" `t $sCadastralNumber}
if ($Region -ne $null) {Write-Host "регион:" `t `t $Region}
if ($Rayion -ne $null) {Write-Host "район:" `t `t `t $Rayion}
if ($sSubParcels -eq "0") {Write-Host "частей у участка:" `t $sSubParcels}
###############------------------------------------------------------------------------------------#
# перемещаем:
# проверка на существование каталога:
if (!(test-path "$OutPath")) {new-item -path $OutPath -type directory -force | Out-Null}
# проверка на существование файла в каталоге назначения:
if (!(test-path "$OutPath\$OutName")) {
# проверка на наличие цифровой подписи:
if (!(test-path "$sSourceXmlFile`.sig")) {
Write-Host "цифровая подпись: `t отсутствует"
move-item -path "$sSourceXmlFile" -destination "$OutPath\$OutName"
moves_log("$Outlog$OutPath\$OutName")
} else {
Write-Host "цифровая подпись: `t есть"
move-item -path "$sSourceXmlFile" -destination "$OutPath\$OutName"
move-item -path "$sSourceXmlFile`.sig" -destination "$OutPath\$OutName`.sig"
moves_log("$Outlog$OutPath\$OutName")
moves_log("$Outlog$OutPath\$OutName`.sig")
}
# проверка на наличие pdf:
$sSourcePdfFile = $sSourceXmlFile -replace "xml","pdf"
if (test-path "$sSourcePdfFile") {
$OutNamePdf = $OutName -replace "xml","pdf"
move-item -path "$sSourcePdfFile" -destination "$OutPath\$OutNamePdf"
move-item -path "$sSourcePdfFile`.sig" -destination "$OutPath\$OutNamePdf`.sig"
moves_log("$Outlog$OutPath\$OutNamePdf")
moves_log("$Outlog$OutPath\$OutNamePdf`.sig")
}
# делаем файл с координатами и ОСМ
if (($DocTypeRus -eq "КПТ") -and ($DocVers -eq "08") -and ($($sSourceXmlFile.Length / 1Mb) -ge 7)) {
$OutFileCSV = "$OutPath\Координаты к $DocTypeRus на $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal от $sDateCreateDoc`.csv"
# заполним заголовок
"кадастровый номер;номер точки;X;Y;погрешность" | Out-File -FilePath $OutFileCSV -Encoding 'default'
"1;2;3;4;5" | Out-File -Append -FilePath $OutFileCSV -Encoding 'default'
$oXmlDocument.Region_Cadastr.Package.Cadastral_Blocks.Cadastral_Block.Parcels.Parcel |`
ForEach-Object -Process {
$sCadastralNumber = $_.CadastralNumber
$_.Entity_Spatial.Spatial_Element.Spelement_Unit |`
ForEach-Object -Process {"$sCadastralNumber;$($_.Su_Nmb);$($_.Ordinate.X -replace "\.",",");$($_.Ordinate.Y -replace "\.",",");$($_.Ordinate.Delta_Geopoint -replace "\.",",")"}
} | Out-File -Append -FilePath $OutFileCSV -Encoding ascii
Write-Host "создан файл:" `t `t "Координаты к $DocTypeRus на $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal от $sDateCreateDoc`.csv"
# делаем файл с ОМС
if ($oXmlDocument.Region_Cadastr.Package.Cadastral_Blocks.Cadastral_Block.OMSPoints.OMSPoint) {
$OutFileCSV = "$OutPath\ОМС к $DocTypeRus на $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal от $sDateCreateDoc`.csv"
"Номер пункта опорной межевой сети на плане;Название и (или) номер, тип пункта опорной межевой сети;Класс опорной межевой сети;X;Y" | Out-File -FilePath $OutFileCSV -Encoding 'default'
"1;2;3;4;5" | Out-File -Append -FilePath $OutFileCSV -Encoding 'default'
# заполним заголовок
ForEach-Object -Process {
$oXmlDocument.Region_Cadastr.Package.Cadastral_Blocks.Cadastral_Block.OMSPoints.OMSPoint |`
ForEach-Object -Process {"$($_.PNmb);$($_.PName -replace ";");$($_.PKlass -replace ";");$($_.OrdX -replace "\.",",");$($_.OrdY -replace "\.",",")"}`
} | Out-File -Append -FilePath $OutFileCSV -Encoding 'default'
Write-Host "создаем файл:" `t `t "ОСМ к $DocTypeRus на $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal от $sDateCreateDoc`.csv"
}
}
} else {
###############------------------------------------------------------------------------------------#
# в каталоге назначения занято, делаем:
if (!(test-path "$RezultatPath\повторы")) {new-item -path "$RezultatPath\повторы" -type directory -force | Out-Null}
Remove-Variable ReNameFlag -ErrorAction SilentlyContinue
$OutNamePovtor = $OutName.Substring(0,($OutName.Length -4))
$sSourcePdfFile = $sSourceXmlFile -replace "xml","pdf"
Write-Host "обратите внимание: такой файл уже имеется" -ForegroundColor Yellow
$NamePlus=0
While ($ReNameFlag -eq $null) { # пока флаг пустой проверяем существование файла и добавляем 1 к NamePlus
if (!(test-path "$RezultatPath\повторы\$OutNamePovtor ($NamePlus)`.xml")) {
move-item -path "$sSourceXmlFile" -destination "$RezultatPath\повторы\$OutNamePovtor ($NamePlus)`.xml"
moves_log("$Outlog$RezultatPath\повторы\$OutNamePovtor ($NamePlus)`.xml")
if (test-path "$sSourceXmlFile`.sig") {
move-item -path "$sSourceXmlFile`.sig" -destination "$RezultatPath\повторы\$OutNamePovtor ($NamePlus)`.xml`.sig"
moves_log("$Outlog$RezultatPath\повторы\$OutNamePovtor ($NamePlus)`.xml`.sig")
}
if (test-path "$sSourcePdfFile") {
move-item -path "$sSourcePdfFile" -destination "$RezultatPath\повторы\$OutNamePovtor ($NamePlus)`.pdf"
move-item -path "$sSourcePdfFile`.sig" -destination "$RezultatPath\повторы\$OutNamePovtor ($NamePlus)`.pdf`.sig"
moves_log("$Outlog$RezultatPath\повторы\$OutNamePovtor ($NamePlus)`.pdf")
moves_log("$Outlog$RezultatPath\повторы\$OutNamePovtor ($NamePlus)`.pdf`.sig")
}
$ReNameFlag=$NamePlus
}
$NamePlus++
}
}# /закончили с перемещением в повторы
###############------------------------------------------------------------------------------------#
}
$FilesEach++
Write-Host "ищем следующий файл..."
Write-Host ""
start-sleep -m 500
}# /закончили с обработкой каждого xml файл из $ZipPath
}# /если нашли xml
# выводим статистику:
Clear-Host
Write-Host "-------------------------------------------------------------------------------"
Write-Host "обработано файлов: `t $FilesEach, из них:" -BackgroundColor Cyan -ForegroundColor DarkBlue
if ($KPT_Each -ne $null) {Write-Host "КПТ" `t `t `t $KPT_Each}
if ($Vidimus_Each -ne $null) {Write-Host "КВЗУ" `t `t `t $Vidimus_Each}
if ($Vidimus_KP_Each -ne $null) {Write-Host "КПЗУ" `t `t `t $Vidimus_KP_Each}
if ($EGRP_Each -ne $null) {Write-Host "ЕГРП" `t `t `t $EGRP_Each}
if ($NoData_Each -ne $null) {Write-Host "Уведомление" `t `t $NoData_Each}
if ($OTKAZ_Each -ne $null) {Write-Host "Отказ" `t `t `t $OTKAZ_Each}
$Summ_Each=$FilesEach-($KPT_Each+$Vidimus_Each+$Vidimus_KP_Each+$EGRP_Each+$NoData_Each+$OTKAZ_Each)
if ($Summ_Each -ne $null) {Write-Host "Проблемных" `t `t $Summ_Each}
Write-Host "-------------------------------------------------------------------------------"
# добавим лог-отчет:
$d=get-date -uformat "%Y-%m-%d"
$t=get-date -uformat "%H:%M"
if ($KPT_Each -eq $null) {$KPT_Each = 0}
if ($Vidimus_Each -eq $null) {$Vidimus_Each = 0}
if ($Vidimus_KP_Each -eq $null) {$Vidimus_KP_Each = 0}
if ($EGRP_Each -eq $null) {$EGRP_Each = 0}
if ($NoData_Each -eq $null) {$NoData_Each = 0}
if ($OTKAZ_Each -eq $null) {$OTKAZ_Each = 0}
if ($Summ_Each -eq $null) {$Summ_Each = 0}
if (!(test-path "$otchet")) {Add-Content -Path "$otchet" -Value "дата;время;КПТ;КВЗУ;КПЗУ;ЕГРП;Уведомление;Отказ;Проблемных"}
Add-Content -Path "$otchet" -Value "$d;$t;$KPT_Each;$Vidimus_Each;$Vidimus_KP_Each;$EGRP_Each;$NoData_Each;$OTKAZ_Each;$Summ_Each"
start-sleep 10
# рекурсивное удаление пустых папок:
# Get-ChildItem -Path $ZipPath -Directory | Where-Object {(Get-ChildItem -Path $_.FullName -Force -Recurse) -eq $null} | Remove-Item