Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   вывод информации через цикл (http://forum.oszone.net/showthread.php?t=297664)

firstarey 30-03-2015 12:19 2489548

вывод информации через цикл
 
Кусок скрипта выводит информацию о 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 "-----------------------------"
}


Kazun 30-03-2015 12:38 2489557

Код:

$activation = 0
while(($activation++) -lt 15) {
        "$activation`t$DocTypeRus`t$CadastralNumber"
}


firstarey 30-03-2015 13:43 2489589

Цитата:

Цитата 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


Kazun 30-03-2015 13:58 2489598

Т.к. в коде уже есть 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}
}



Время: 10:48.

Время: 10:48.
© OSzone.net 2001-