DOS batch script to convert 2 hex line

How to convert sring to hex to a DOS script package? For example, convert "abcd" to "61626364". Since "a" is 0x61 ...

I tried to find a solution from the Internet per day, but could not find an answer.

+5
source share
2 answers
@echo off setlocal EnableDelayedExpansion rem Store the string in chr.tmp file set /P "=%~1" < NUL > chr.tmp rem Create zero.tmp file with the same number of Ascii zero characters for %%a in (chr.tmp) do fsutil file createnew zero.tmp %%~Za > NUL rem Compare both files with FC /B and get the differences set "hex=" for /F "skip=1 tokens=2" %%a in ('fc /B chr.tmp zero.tmp') do set "hex=!hex!%%a" del chr.tmp zero.tmp echo %hex% 

Output Example:

 C:\> test.bat abcd 61626364 
+5
source
 :stringToHex @echo off del tmp.hex >nul 2>nul del tmp.str >nul 2>nul if "%~1" equ "" ( echo no string passed exit /b 1 ) echo|set /p=%~1 >tmp.str ::(echo(%~1)>tmp.str rem certutil -dump tmp.str certutil -encodehex tmp.str tmp.hex >nul setlocal enableDelayedExpansion set "hex_str=" for /f "usebackq tokens=2 delims= " %%A in ("tmp.hex") do ( set "line=%%A" set hex_str=!hex_str!!line:~0,48! set hex_str=!hex_str: =! ) set hex_str=%hex_str:~0,-2% echo !hex_str! 

!! Note that the stackoverflow editor may mess up the tab character. tokens=2 delims= " after the dividends there should be one TAB .

requires a string passed as an argument. See also the debnham : hexDump function , which you can use instead of certutil.

+3
source

Source: https://habr.com/ru/post/1241774/


All Articles