使用批处理文件的二进制文件转换为十六进制再presentation [英] converting a binary file to HEX representation using batch file

查看:382
本文介绍了使用批处理文件的二进制文件转换为十六进制再presentation的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要一个DLL文件转换为十六进制再presentation使用它作为字符串的一部分来创建这样一个SQL Server组件

I need to convert a DLL file to HEX representation to use it as a part of string to create a sql server assembly like this


CREATE ASSEMBLY [AssemblyNameHere]结果
从0x4D5A90000300000004000000FFFF000 ......的继续二进制数据的结果
PERMISSION_SET WITH EXTERNAL_ACCESS =

我需要这是有很多原因的批处理文件,但似乎作为语句只适用于文本文件。

I need this to be in a batch file for many reasons, but it seems that FOR statement only suitable for text files.

推荐答案

这是不是创造纯批十六进制输出一个非常好的主意。

It is not a very good idea to create a hex output with pure batch.

但是你可以使用VBScript或简单的任务FC.EXE可以工作。

But you could use vbscript or for simple tasks FC.exe could work.

@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!
    )
)

首先,我创建(几乎)相同长度的文件,然后以二进制模式(/ B),输出进行扫描,并在检测线missings,他们充满的hexVal与FC进行比较X10的字符串(在这种情况下的0x41 ='A')。

First I create a file with (nearly) the same length, and then I compare them with FC in binary mode (/B), the output is scanned and if a line missings are detected, they are filled with the hexVal of the x10 string (in this case 0x41='A').

这篇关于使用批处理文件的二进制文件转换为十六进制再presentation的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆