Пакетный файл на канале 9 был слишком длинным для моих вкусов. Вот более простая (IMO) версия "tohex.bat", которую я только что написал:
@echo off & setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set LOOKUP=0123456789abcdef &set HEXSTR=&set PREFIX=
if "%1"=="" echo 0&goto :EOF
set /a A=%*
if !A! LSS 0 set /a A=0xfffffff + !A! + 1 & set PREFIX=f
:loop
set /a B=!A! %% 16 & set /a A=!A! / 16
set HEXSTR=!LOOKUP:~%B%,1!%HEXSTR%
if %A% GTR 0 goto :loop
echo %PREFIX%%HEXSTR%
Он работает во многом так же, как и другой скрипт (итеративно делится на 16), но для построения шестнадцатеричной строки используется поиск строки (вместо серии операторов if). Он также обрабатывает отрицательные числа (дополнение до двух), но это немного хак.
Вы можете вызвать его из другого командного файла так:
for /f "delims=" %%Q IN ('call tohex.bat 0x%HexV1% + 0x1') DO SET HexV3=%%Q
Надеюсь, это поможет.