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

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

Аватара для YuS_2

Crazy


Contributor


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

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


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

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:03, 25-08-2019 | #2