Цитата Alexander_88:
Над каждым разделителем есть ссылка на файл. Необходимо проверить, чтобы имя файла в ссылке (без расширения) находилось в текущем блоке 4 раза (считая имя в ссылке на файл). »
|
Цитата Alexander_88:
Если в каком то блоке количество фраз (имен файла) не 4, то должно вывестись на экран имя файла в ссылке (в текущем блоке), а также имя txt файла, где находится текущий блок. »
|
Код:
function parsefile {
process{
$fname = $_.name
if (($x = gc $_.fullname -raw) -match $split){
[array]$arr = $x -split $split
if ($arr.length -gt 1){
for($i=0;$i -lt $arr.length-1;$i++){
$arr[$i] -match '(?<=\[url\])([^\[]+)(?=\[/url])'|out-null
if($matches[1]){
$uri = [uri]$matches[1]
$r = ([io.fileinfo]$uri.segments[-1]).basename
$cnt = (sls -inp $arr[$i] -patt $r -all).matches.count
if($cnt -ne $count){
write-host $r - $fname -for magenta
}
} else { write-host Error! Name file not found. -for red }
}
}
} else { write-host Error! $split - not found -for red }
}
}
$fld = 'd:\*'
$flt = '*.txt'
$split = "//=================="
$count = 4
dir $fld -inc $flt -file|parsefile