@echo off rem Boot The Loop rem map LOOP.ISO hole CD rem prepare: mkisofs -graft-points /LOOP.ISO=nul rem cdrtools-2.01.01a18 expected at last - new algorithm for zero length files set PE_ISO=%~1 rem #################################################################################################### set PE_ISO=dest.iso rem #################################################################################################### if not exist "%PE_ISO%" (echo error: file %PE_ISO% not found &goto :eof) rem grab ISO file size and convert to Hex for %%A in ("%PE_ISO%") do (echo %PE_ISO% file size: %%~zA &call :DecimalToHex %%~zA FileSizeHex) set FileSizeHex=0000000%FileSizeHex% set FileSizeHex=%FileSizeHex:~-9% echo %PE_ISO% file size: 0x%FileSizeHex% rem ISO9660: 9.1.4 Data Length stored according 7.3.3 Both-byte orders set FileSizeISO=:x%FileSizeHex:~6,2%:x%FileSizeHex:~4,2%:x%FileSizeHex:~2,2%:x%FileSizeHex:~0,2% set FileSizeISO=%FileSizeISO%:x%FileSizeHex:~0,2%:x%FileSizeHex:~2,2%:x%FileSizeHex:~4,2%:x%FileSizeHex:~6,2% rem echo %FileSizeISO% set gsar_s=:xF0:xFF:xFF:xFF:xFF:xFF:xFF:xF0:x00:x00:x00:x00:x00:x00:x00:x00:x46:x01:x01:x04:x00:x00:x10:x00:x00:x00:x01:x00:x00:x01:x08:x4C:x4F:x4F:x50:x2E:x49:x53:x4F:x00 set gsar_r=:x00:x00:x00:x00:x00:x00:x00:x00%FileSizeISO%:x46:x01:x01:x04:x00:x00:x10:x00:x00:x00:x01:x00:x00:x01:x08:x4C:x4F:x4F:x50:x2E:x49:x53:x4F:x00 echo on build\bin\gsar -o "-s%gsar_s%" "-r%gsar_r%" dest.iso @goto :eof ::=============================================================== rem T.Salmi rem http://lipas.uwasa.fi/~ts/http/http2.html#cmdscript rem ftp://garbo.uwasa.fi/pc/link/tscmd.zip :DecimalToHex DecimalIn HexOut :: setlocal enableextensions set /a dec_=%1 if %dec_% LSS 0 (endlocal & set %2=Error: negative & goto :EOF) set hex_= :_hexloop set /a dec1_=%dec_% set /a dec_=%dec_% / 16 set /a hexdigit_=%dec1_% - 16*%dec_% set /a hexidx_=%hexdigit_%+1 for /f "tokens=%hexidx_%" %%h in ('echo 0 1 2 3 4 5 6 7 8 9 A B C D E F') do set hexdigit_=%%h set hex_=%hexdigit_%%hex_% if %dec_% GTR 0 goto :_hexloop endlocal & set %2=%hex_% & goto :EOF