|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - как заменить бинарную строку ? |
|
CMD/BAT - как заменить бинарную строку ?
|
Старожил Сообщения: 267 |
Профиль | Отправить PM | Цитировать
есть бинарный файл test1.bin
как через BAT файл заменить "3435" на "3436" чтобы получился файл test2.bin ? Архив с тестовыми файлами: 6.zip |
|
Отправлено: 21:07, 12-09-2022 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать тут только 2 варианта как мне известно
с помощью bat и сторонней утилиты .Но тут на форуме вроде как запрещено ) 2 вариант с помощью power shell и метода -Encoding byte. а так с помощью любого hex редактора можно сделать патч. |
Отправлено: 22:06, 12-09-2022 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 267
|
Профиль | Отправить PM | Цитировать Цитата olga_maksi29:
Цитата olga_maksi29:
Цитата olga_maksi29:
|
|||
Отправлено: 22:20, 12-09-2022 | #3 |
Старожил Сообщения: 222
|
Профиль | Отправить PM | Цитировать Примерно так
$as_bytes = Get-Content test1.bin -Raw -Encoding byte $as_text = $as_bytes.forEach('ToString', 'X2') -join ' ' $patternregex = ('31 32 33 0D 0A 34 35 37 0D 0A 38 35') $patch = '31 32 33 0D 0A 34 36 37 0D 0A 38 35' $checkPattern=Select-String -Pattern $patternregex -InputObject $as_text If ($checkPattern -ne $null) { $as_text_replaced = $as_text -replace $patternregex, $patch } Elseif (Select-String -Pattern $patch -InputObject $as_text) { Write-Output ' Already patch, exiting' Exit } else { Write-Output "Byte not found" } [byte[]] $as_bytes_replaced = -split $as_text_replaced -replace '^', '0x' Set-Content test2.bin -Encoding Byte -Value $as_bytes_replaced |
------- Отправлено: 22:22, 12-09-2022 | #4 |
Старожил Сообщения: 267
|
Профиль | Отправить PM | Цитировать Цитата ddv122:
можно так: (2й и 3й способ не принимают x00 в строке замены, 1й принимает) @echo off copy test1.bin test2.bin call JREPL.BAT \x34\x35 \x34\x36 /XSEQ /M /F "test2.bin" /O - call JREPL.BAT \x0A\x38 \x0A\x38\x38 /XSEQ /M /F "test2.bin" /O - @echo off copy test1.bin test2.bin set "F1=\x34\x35" set "R1=\x34\x36" set "F2=\x0A\x38" set "R2=\x0A\x38\x38" call JREPL.BAT "%F1% %F2%" "%R1% %R2%" /T " " /XSEQ /M /F "test2.bin" /O - |
||
Последний раз редактировалось shadowbat, 13-09-2022 в 15:37. Отправлено: 12:49, 13-09-2022 | #5 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 18:36, 14-09-2022 | #6 |
fascinating rhythm Сообщения: 6491
|
Профиль | Отправить PM | Цитировать Я автору уже давал эту ссылку в его прошлой теме, но, видимо, надо повторить.
|
------- Отправлено: 21:24, 14-09-2022 | #7 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
Да, в том топике есть и скрипты, и утилита для решения вопроса, надо просто почитать. Если нужен результат - почитает, а если персональный ответ... возможно, кто-нибудь напишет... |
|
------- Отправлено: 10:40, 15-09-2022 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Заменить строку в определённом месте файла | DJ Mogarych | Программирование в *nix | 2 | 04-01-2018 19:51 | |
Debian/Ubuntu - [решено] sed 's///' - не получается заменить строку файла | VladDV | Общий по Linux | 2 | 09-12-2011 02:09 | |
[решено] Как заменить строку в ENTRIES.INI средствами автоматизации. | semiono | AutoIt | 17 | 08-04-2009 12:04 | |
[решено] Как заменить строку [27] в файле? | semiono | AutoIt | 8 | 05-04-2009 02:56 | |
Как заменить строку <input type... | Rustemal | Вебмастеру | 1 | 29-06-2003 15:26 |
|