преобразование двоичного файла в представление HEX с использованием командного файла - PullRequest
3 голосов
/ 10 января 2011

Мне нужно преобразовать файл DLL в представление HEX, чтобы использовать его как часть строки для создания сборки сервера sql, подобной этой

CREATE ASSEMBLY [AssemblyNameHere]<br> FROM 0x4D5A90000300000004000000FFFF000......<em>continue binary data</em><br> WITH PERMISSION_SET = EXTERNAL_ACCESS

Мне нужно, чтобы это было в командном файле по многим причинам, но кажется, что оператор FOR подходит только для текстовых файлов.

Ответы [ 2 ]

4 голосов
/ 31 января 2015

самый простой способ - с помощью команды CERTUTIL:

certutil -encodehex c:\myfile.dll myfile.hex
3 голосов
/ 10 января 2011

Не очень хорошая идея создавать вывод в шестнадцатеричном формате с использованием чистого пакета.

Но вы можете использовать vbscript или для простых задач FC.exe может работать.

@echo off
SETLOCAL EnableDelayedExpansion
set filesize=%~z1
set "hexVal=41"
set "x10=AAAAAAAAAA"

set /a chunks=1+filesize / 10

del dummy.txt 2>nul > nul
for /L %%n in (0,1,%chunks%) DO (
  <nul >> dummy.txt set /p ".=%x10%"
)

set /a expectedNum=0
for /F "eol=F usebackq tokens=1,2 skip=1 delims=:[] " %%A in (`fc /b "%~dpf1" dummy.txt`) DO (
    set /a num=0x%%A && (
            set /a numDec=num-1
        set "hex=%%B"

        for /L %%n in (!expectedNum!=,=1 !numDec!) DO (
            echo %hexVal%
        )
        set /a expectedNum=num+1
        echo !hex!
    )
)

Сначала я создаю файл (почти) такой же длины, а затем сравниваю их с FC в двоичном режиме (/ B), вывод сканируется, и если обнаруживаются пропуски строк, они заполняются hexVal строка x10 (в данном случае 0x41 = 'A').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...