Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Пользователь


Сообщения: 102
Благодарности: 8

Профиль | Отправить PM | Цитировать


Цитата Kazun:
Код: »
не так все просто

информация выводиться не после выполнения скрипта, а в процессе т.к. скрипт запущен все время и мониторит определенную папку.
получается что обработав 1 файл записали в переменную, обработав следующий записали в переменную+1...дошли до определенного значения и заменили значение в первой переменной. получается в моем коде имеем 5 последних значений.

приведу весь код чтоб было понятней
сам скрипт
Код: Выделить весь код
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"
#	количество срабатываний
$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) = $DocTypeRus
	$ws.Cells.Item($Row,5) = $CadastralNumber
	$ws.Cells.Item($Row,6) = $DateCreateDoc
	$ws.Cells.Item($Row,7) = $FileXmlCurrent.name
	$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()
	$ex.Quit()
}
#--<Функция лога перемещений
#-->Функция лога ошибок
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) = $ErrorAction
	# Оформляем
	$selection = $ws.Range(("A{0}" -f $Row),("E{0}" -f $Row))
	#$selection.Select() | Out-Null
	Excel_format_2
	# закрываем
	$selection = $null
	$wb.Save()
	$wb.Close()
	$ex.Quit()
}
#--<Функция лога ошибок
#-->создаем функцию для известного документа, но не известной версии (не описанной в скрипте)
function NoDocVers {
	if (!(test-path "$PathOut\проблемные\$DocTypeRus\$DocVers\")) {
		new-item -path $PathOut -name "проблемные\$DocTypeRus\$DocVers" -type directory -force | Out-Null
	}
	if (!(test-path "$PathOut\проблемные\$DocTypeRus\$DocVers\$($FileXmlCurrent.name)")) {
		move-item -path "$FileXmlCurrent" -destination "$PathOut\проблемные\$DocTypeRus\$DocVers"
	} else {
		rename-item -path "$FileXmlCurrent" -newname "$($FileXmlCurrent.name)`.ОШИБКА"
	}
}
#--<создаем функцию для известного документа, но не известной версии (не описанной в скрипте)
#---#-------------------------------------------------------------------------------------------------------

#---#-------------------------------------------------------------------------------------------------------
#-->Если таблицы нет, создаем
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()
	$ex.Quit()
}
#--<Если таблицы нет, создаем
#---#-------------------------------------------------------------------------------------------------------




#-->Наблюдатель за папкой. при появлении файла, обрабатывает его:
while($TRUE){
    Clear-Host
    Write-Host "наблюдаем с`t$watcher_start_d  $watcher_start_t"
	Write-Host "срабатываний`t$activation"
	if ($activation -ne 0) {
		Write-Host "последние 5:"
		Write-Host "-----------------------------"
		Write-Host '$AText1' "$AText1"
		Write-Host '$AText2' "$AText2"
		Write-Host '$AText3' "$AText3"
		Write-Host '$AText4' "$AText4"
		Write-Host '$AText5' "$AText5"
		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 5 # задержка перед следующим проходом
        continue
    } else {
#-->	старт основному файлу
        Clear-Host
		#---#-------------------------------------------------------------------------------------------------------
		#-->Обработка архивов
		#	получаем объекты переменную $FilesZip
		#$FilesZip = Get-ChildItem $PathIn\* -Include *.zip
		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"
		#---#-------------------------------------------------------------------------------------------------------
				#-->Обработка 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,ErrorAction -ErrorAction SilentlyContinue
						Remove-Variable DocNumber,DateCreateDoc,CadastralNumber,Cad_Region,Cad_Rayion,Cad_Kvartal,Region,Rayion -ErrorAction SilentlyContinue
						Remove-Variable 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
											$KPT_count++
											# получаем значения в переменные #--------------------------------------------------------------
											$DocNumber       = $oXmlDocument.KPT.CertificationDoc.Number
											$DateCreateDoc   = $oXmlDocument.KPT.CertificationDoc.Date
											$CadastralNumber = $oXmlDocument.KPT.CadastralBlocks.CadastralBlock.CadastralNumber
											# ----------------------------------------------------------------------------------------------
											$CadastralNumber = $CadastralNumber -replace " " #	убираем пробелы в кадастровом номере
											# разбить кадастровый номер на подстроки по ":" в итоге имеем следующие переменные:
											$Cad_Region      = $CadastralNumber.split(":")[0]
											$Cad_Rayion      = $CadastralNumber.split(":")[1]
											$Cad_Kvartal     = $CadastralNumber.split(":")[2]
											# загрузим регионы в массив:
											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-01"
												$ErrorText   = "отсутствует перечень регионов"
												$ErrorAction = "поместите файл regions.txt в каталог $PathPrefix\base"
												error_log ($d,$t,$FileXmlCurrent.name,$ErrorText,$ErrorAction)
												break
											}
											# загрузим районы в массив:
											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"
												$OutName = "$DocTypeRus на $Cad_Region`-$Cad_Rayion`-$Cad_Kvartal от $DateCreateDoc`.xml"
											} else {
												$ErrorCode   = "04-02"
												$ErrorText   = "отсутствует перечень районов по $Cad_Region региону ($Region)"
												$ErrorAction = "поместите файл $Cad_Region`_rayion.txt в каталог $PathPrefix\base"
												error_log ($d,$t,$FileXmlCurrent.name,$ErrorText,$ErrorAction)
												break
											}
										}			# закончили с 9 версией КПТ
										Default {	# что делать, когда версия КПТ не описана
											Write-Host "версия документа:" `t $DocVers
											$ErrorCode   = "03-01"
											$ErrorText   = "$DocVers версия $DocTypeRus не может быть обработана"
											$ErrorAction = "сообщить разработчику о данной проблеме"
											error_log ($d,$t,$FileXmlCurrent.name,$ErrorText,$ErrorAction)
											moves_log ($d,$t,$FileZipCurrent.name,$DocTypeRus,$DateCreateDoc,$FileXmlCurrent.name,$OutPath,$OutName)
											NoDocVers ($DocTypeRus,$DocVers,$FileXmlCurrent)
											break
										}			# закончили с вариантом, когда версия КПТ не описана
									}				# закончили с проходом по версиям КПТ
								}					# закончили с КПТ
								Vidimus {			# выписка
									$DocTypeRus = "КВЗУ"
									Write-Host "версия документа:" `t $DocVers
									Switch ($DocVers) {
										"03" { # https://portal.rosreestr.ru/xsl/GKN/Vidimus/03/common.xsl совпадает с 4
											Write-Host ""
											}
										}			# закончили с 9 версией КПТ
										Default {	# что делать, когда версия КПТ не описана
										Write-Host ""
										}
								}
										
										
										
										
										
								Default {			# что делать, когда тип документа не описан
									$ErrorCode   = "02-01"
									$ErrorText   = "тип документа $DocType не может быть обработан"
									$ErrorAction = "сообщить разработчику о данной проблеме"
									error_log ($d,$t,$FileXmlCurrent.name,$ErrorText,$ErrorAction)
									rename-item -path "$FileXmlCurrent" -newname "$($FileXmlCurrent.name)`.ОШИБКА"
									break
								}
							}						# закончили с проходом по типам документов
						} else {					# не удалось определить тип документа
							$ErrorCode   = "01-01"
							$ErrorText   = "не удалось определить тип документа"
							$ErrorAction = 'в xml вторая строка должна начинаться с <?xml-stylesheet type="text/xsl" href="'
							error_log ($d,$t,$FileXmlCurrent.name,$ErrorText,$ErrorAction)
							break
						}
						#-->выше обработка xml ниже перемещение
						#
						#-->Описываем переменные полученные в результате работы<-----#
						#                                                            #
						#	$FileXmlCurrent   обрабатываемый xml файл                #
						#                                                            #
						#	$ErrorCode        код ошибки                             #
						#	$ErrorText                                               #
						#	$ErrorAction                                             #
						#                                                            #
						#	$Cad_Region       кадастровый регион цифрами             #
						#	$Cad_Rayion       кадастровый район цифрами              #
						#	$Cad_Kvartal      кадастровый квартал цифрами            #
						#	$CadastralNumber  кадастровый номер цифрами полностью    #
						#                                                            #
						#	$Region           регион буквами                         #
						#	$Rayion           район буквами                          #
						#                                                            #
						#	$OutPath          сформированный путь                    #
						#	$OutName          сформированное имя                     #
						#                                                            #
						#<--Описываем переменные полученные в результате работы----->#
						#
						if ($ErrorCode -ne $null) {	#	если ошибки были
							Write-Host "-----------------------------------------"
							Write-Host "в процессе обработки xml возникла ошибка:"
							Write-Host "-----------------------------------------"
							Write-Host "Код ошибки:" `t ErrorCode
							Write-Host "Текст:"    `t`t $ErrorText
							Write-Host "Действие:"   `t $ErrorAction
							msg $UserName /TIME:9000 "$ErrorText"
							start-sleep $ErrorSleep
						} else {	#					если ошибок не было
							# если не было не опознанных версий
							#-->выводим информацию на экран
							msg $UserName /TIME:9000 "$DocTypeRus ($DocVers) $CadastralNumber"
							###############------------------------------------------------------------------------------------#
							if ($DocNumber -ne $null)        {Write-Host "номер документа:"   `t     $DocNumber}
							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
								if (test-path "$FileXmlCurrent`.sig") { #			проверка на наличие цифровой подписи
									Write-Host "цифровая подпись: `t есть"
									move-item -path "$FileXmlCurrent`.sig"			-destination "$OutPath\$OutName`.sig"
		#							moves_log ($OutName = "$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
									# всего секунд + сколько обработано строк
									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
										# всего секунд + сколько обработано строк
										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
										if (test-path "$FileXmlCurrent`.sig") {
											$OutName = "$OutNamePovtor ($NamePlus)`.xml`.sig"
											move-item -path "$FileXmlCurrent`.sig" -destination "$OutPath\$OutName"
										}
									} else {
										$NamePlus++
									}
								}
							} # /закончили с перемещением
						}
						#-->выше перемещение xml ниже завершение
						#
						#-->Описываем переменные полученные в результате работы<-----#
						#                                                            #
						#	$FileXmlCurrent   обрабатываемый xml файл                #
						#                                                            #
						#	$ErrorCode        код ошибки                             #
						#	$ErrorText                                               #
						#	$ErrorAction                                             #
						#                                                            #
						#	$OutPath          сформированный путь                    #
						#	$OutName          сформированное имя                     #
						#                                                            #
						#<--Описываем переменные полученные в результате работы----->#
						#
						
						
						
						
						
						
						
				
						$FilesEach++
						Write-Host "-----------------------------------------"
						Write-Host "ищем следующий файл..."
						Write-Host ""
						start-sleep 1
					} #	каждое значение $FilesXml делаем с $FileXmlCurrent:
				} else {
					Write-Host "не найдены xml-файлы. выход..." -ForegroundColor Yellow
					start-sleep $ErrorSleep
				}
			}#<--Обработка xml
		} else {
			Write-Host "не найдены zip-архивы. выход..." -ForegroundColor Yellow
			start-sleep $ErrorSleep
		}#<--Обработка архивов
		read-host "конец"
		$activation++
		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"
		}
	}
} #/закончили со срабатыванием на файл в $ZipPath

Отправлено: 13:43, 30-03-2015 | #3