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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - вывод информации через цикл

Ответить
Настройки темы
PowerShell - вывод информации через цикл

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


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

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


Кусок скрипта выводит информацию о 5 последних обработанных файлах. Но вот реализация меня не устраивает.
Как правильно сделать вывод информации? через While? т.е. если я например захочу видеть информацию о 15 последних объектах?

activation - счетчик срабатываний скрипта
AText - собственно информация для отображения, которая меняется после каждого срабатывания


Код: Выделить весь код
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  -ge 5) { #тут больше или равно!
	$AText1 = $AText2
	$AText2 = $AText3
	$AText3 = $AText4
	$AText4 = $AText5
	$AText5 = "$activation`t$DocTypeRus`t$CadastralNumber"
}
if ($activation -ne 0) {
	Write-Host "последние 5:"
	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 "-----------------------------"
}

Отправлено: 12:19, 30-03-2015

 

Ветеран


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

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


Код: Выделить весь код
$activation = 0
while(($activation++) -lt 15) {
	"$activation`t$DocTypeRus`t$CadastralNumber"
}

Отправлено: 12:38, 30-03-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


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


Сообщения: 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


Ветеран


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

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


Т.к. в коде уже есть while, зачем плодить непонятные переменные:

Код: Выделить весь код
while ($true) {
	if($activation -eq 0) {
		Clear-Host
		Write-Host "наблюдаем с`t$watcher_start_d  $watcher_start_t"
		Write-Host "срабатываний`t$activation"
	}
	
	Write-Host "$activation`t$DocTypeRus`t$CadastralNumber"
	$activation++
	
	if($activation -eq 15) {$activation = 0}
}

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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - вывод информации через цикл

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] Вывод информации о ПК по сети Rusya89 Скриптовые языки администрирования Windows 1 19-02-2015 15:36
CMD/BAT - Как в .bat сделать вывод информации правах? Eugene Shugaev Скриптовые языки администрирования Windows 4 12-03-2014 11:55
C/C++ - Подсчёт количества слов в строке через цикл pashazt Программирование и базы данных 3 16-12-2012 10:54
Вывод информации из MySQL Moon Mag Вебмастеру 12 09-01-2009 18:44
Вывод информации на двух мониторах Guest Программирование и базы данных 1 26-07-2004 15:39




 
Переход