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

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

Аватара для YuS_2

Crazy


Contributor


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

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


Цитата 9119:
при запуске получаю следующее: »
Там должна быть не строка, а массив байтов...
В общем, сделайте лучше так:
Пример для трех файлов и трех шаблонов замены:
Код: Выделить весь код
function Replace-Bytes {
	param(
		$file = '.\F0D7.tmp',
		$fout = '.\F0D7_1.tmp',
		[byte[]]$fin = (0x08,0x3A,0x35,0x32,0x88,0x65,0x59,0x18,0x01),
		[byte[]]$rep = (0x08,0x8A,0x34,0x31,0x87,0x64,0x58,0x17,0x00)
	)
	
	$bytes = [io.file]::readallbytes($file)
	$i = -1
	$a = -join $fin
	do {
		$i = [byte[]]::indexof($bytes,$fin[0],($i+1))
		[byte[]]$tmp = @()
		for ($k = $i; $k -lt ($i+$fin.count);$k++){
			$tmp += $bytes[$k]
		}
		$b = -join $tmp
	} while ($a -ne $b)
	for ($j,$n=0,$i;$j -lt $rep.count;$n++,$j++){
		$bytes[$n] = $rep[$j]
	}
	[io.file]::writeallbytes($fout, $bytes)
}

[byte[]]$findb = 0x08,0x3A,0x35,0x32,0x88,0x65,0x59,0x18,0x01
# количество шаблонов должно соответствовать количеству файлов
$files = '.\F0D1.tmp','.\F0D2.tmp','.\F0D3.tmp' # 3 файла
$frep = gc test.txt # здесь в файле содержится 3 строки шаблонов замены

0..2|%{
	replace-bytes -file $files[$_] -fout "fout$($_+1).tmp" -fin $findb -rep $([byte[]]($frep[$_] -split ','))
}

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

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

Отправлено: 12:04, 03-08-2021 | #16