Цитата mwz:
sunnykey,
Скорее там лежит неопределённое число файлов по маске
Фамилия.ИО.txt
и один файл Log.txt.
И надо перебирать все файлы первого типа, дописывая в новую строку Log.txt имя того файла, который проверяется, и результат из этого файла (т.е. дописывая в строку Log.txt с именем файла или найденную подстроку "..... Продукт: Lotus Notes 8.5.3 ru -- Операция установки успешно завершена" или пустую подстроку если такой в файле нет). »
|
Скрипт теперь перебирает все текстовые файлы, за исключением
log.txt. Находит последнюю строку в файле равную
Lotus Notes 8.5.3 ru -- Операция установки успешно завершена, добавляет имя из названия файла и записывает в log.txt. Если ни одна строка по шаблону не найдена, то пишет просто имя из файла. Надеюсь правильно.
Код:
#Powershell script.
#Don't forget unlock script executing by
#using command "Set-ExecutionPolicy RemoteSigned" or "Set-ExecutionPolicy Unrestricted"
#Save this file with ".ps1" extension
$LogDir='D:\google_drive'
$LogPath="$LogDir\log.txt"
filter AddUserName ([string]$uname){
if ($_ -ne $null) {
$uname.TrimEnd(".txt")+" -- "+$_
}
}
if ( -not (Test-Path -Path $LogPath)) {
New-Item -ItemType File -Path $LogPath
}
Set-Location -Path $LogDir
$FileList=Get-ChildItem -Path ".\*" -Include "*.txt" -Exclude "log.txt" -File
foreach ($el in $FileList) {
$CurStr=Get-Content -Path $el | Select-String -Pattern `
"Продукт: Lotus Notes 8.5.3 ru -- Операция установки успешно завершена." | `
Select-Object -Last 1
if ($CurStr -eq $null) {
$CurStr=" "
}
$CurStr | AddUserName -uname $el.Name | Out-File -FilePath $LogPath -Append
}