Advertisement
npocmaka

split.bat

Jun 22nd, 2013
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. @echo off
  2.  
  3. setlocal enableExtensions
  4. rem :-----------------------------------------
  5. rem : check if should pront the help message
  6. rem :-----------------------------------------
  7. if "%~2" equ "" goto :help
  8. for %%H in (/h -h /help -help) do (
  9.     if /I "%~1" equ "%%H" goto :help
  10. )
  11. if not exist "%~1" echo file does not exist & exit /b 1
  12.  
  13.  
  14. rem :-----------------------------------------
  15. rem : validate input
  16. rem :-----------------------------------------
  17. set /a size=%~2
  18. if not defined size echo something wrong with size parameter & exit /b 2
  19. if %size%0 equ 00 echo not a valid number passed as a parameter & exit /b 3
  20.  
  21. rem : -- two hex symbols are 1 byte
  22. rem : -- so the sum of all hex symbols
  23. rem : -- per part should be doubled
  24. set /a len=%size%*2
  25. set "file=%~dfn1"
  26.  
  27. for %%F in ("%file%") do set fn=%%~nxF
  28.  
  29. rem : -- clear temp data
  30. del /F /Q "%temp%\file" >nul 2>&1
  31. del /F /Q  "%temp%\fn.p.*" >nul 2>&1
  32. certutil -encodehex -f "%file%" "%temp%\file" >nul
  33. set "part=1"
  34.  
  35. setlocal enableDelayedExpansion
  36.     set "hex_str="
  37.     set hex_len=0
  38.     break>%temp%\fn.p.!part!
  39.    
  40. rem : -- reads the hex encoded file
  41. rem : -- and make it on a parts that will
  42. rem : -- decoded with certutil
  43. for /f "usebackq tokens=2 delims=   " %%A in ("%temp%\file") do (
  44.     set "line=%%A"
  45.          for %%K in (!line:~0,48!) do (
  46.             rem 8192
  47.            
  48.             if !hex_len! EQU 7000 (
  49.                
  50.                 echo !hex_str!>>%temp%\fn.p.!part!
  51.                 set "hex_str="
  52.                 set hex_len=0
  53.                 set /a len=!len!-7000
  54.             )
  55.  
  56.             if !hex_len! LSS !len! (
  57.                 set "hex_str=!hex_str!%%K"
  58.                 set /a hex_len=hex_len+2
  59.             ) else (
  60.                 echo !hex_str!>>%temp%\fn.p.!part!
  61.                 certutil -decodehex -f %temp%\fn.p.!part! %fn%.part.!part! >nul
  62.                 echo -- !part!th part created --
  63.                 set hex_str=%%K
  64.                 set hex_len=2
  65.                 set /a part=part+1
  66.                 break>%temp%\fn.p.!part!
  67.                 set /a len=%size%*2
  68.             )
  69.  
  70.         )
  71. )
  72. echo !hex_str!>>%temp%\fn.p.!part!
  73. certutil -decodehex -f %temp%\fn.p.!part! %fn%.part.!part! >nul
  74. echo -- !part!nt part created --
  75.  
  76. del /F /Q  %temp%\fn.p.* >nul 2>&1
  77. del /F /Q  %temp%\file >nul 2>&1
  78. endlocal
  79. endlocal
  80. goto :eof
  81. rem :-----------------------------------------
  82. rem : help message
  83. rem :-----------------------------------------
  84.  
  85. :help
  86. echo\
  87. echo Splits a file on parts by given size
  88. echo\
  89. echo\
  90. echo    %0 file size
  91. echo\
  92. echo\
  93. echo by Vasil "npocmaka" Arnaudov
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement