Имя пользователя:
Пароль:
 

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

Аватара для YuS_2

Crazy


Contributor


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

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


Цитата NickM:
Количество разное »
Было бы проще, если бы было одинаковое...
Ну да ладно. Примерно так:
Код: Выделить весь код
param (
	[string]$folder = '.\TEST',
	[string]$tmpl = 'AT&TFORM'
)
function RW-Stream {
	param (
		[Parameter(ValueFromPipeline)]
		[ValidateNotNullOrEmpty()]
		$filein,
		$fileout = 'tmp.tmp',
		$template
	)
	begin {
		new-variable -name block -val 524288
		$buf = new-object byte[] ($block)
	}
	process {
		$flag = $true
		$reader = [io.streamreader]::new($filein.fullname)
		$writer = [io.streamwriter]::new($fileout)
		new-variable -name tblock -val 1
		$tbuf = new-object byte[] ($tblock)
		while ($reader.basestream.position -lt $reader.basestream.length -and $flag){
			$null = $reader.basestream.read($tbuf,0,$tblock)
			if ([char][int]$tbuf[0] -eq $template[0]){
				$pos = $reader.basestream.position - 1
				$i,$flag1 = 1,$true
				while ($flag1 -and $i -lt $template.length){
					$null = $reader.basestream.read($tbuf,0,$tblock)
					if ([char][int]$tbuf[0] -eq $template[$i]){
						if ($i -eq $template.length-1){
							$flag,$flag1 = $false,$false
							$reader.basestream.position = $pos
						}
					} else {$flag1 = $false}
					$i++
				}
			}
		}
		rv tbuf;rv tblock
		while ($reader.basestream.position -lt $reader.basestream.length){
			$cnt = $reader.basestream.read($buf,0,$block)
			$writer.basestream.write($buf,0,$cnt)
		}
		$reader.dispose();$writer.dispose()
		$reader.close();$writer.close()
		
		# Если создавать новые файлы не требуется, то исходные файлы будут 
		# перезаписаны новыми:
		
		#mi $fileout $($filein.fullname) -force
		
		# Если необходимо переименование в .djvu, то строка выше должна быть 
		# закомментирована, а последующая раскомментирована. Создаются файлы
		# с таким же именем, но с расширением djvu. Исходные файлы не изменяются:
		
		mi $fileout $($filein.fullname -replace '\..*$','.djvu') -force
	}
}
dir $folder -file -rec |rw-stream -templ $tmpl

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


Последний раз редактировалось YuS_2, 05-03-2022 в 17:10.

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

Отправлено: 15:15, 05-03-2022 | #4