1. @echo off
  2. setlocal enabledelayedexpansion
  3. IF EXIST "%~2" goto:eof
  4. SET maxsize=0
  5. SET cursize=0
  6. SET prcomp=0
  7. IF NOT "%~3"=="" (SET level=%~3) ELSE (SET level=6)
  8. IF NOT "%~4"=="" (SET size=%~4) ELSE (SET size=128)
  9. IF NOT "%~5"=="" (SET threads=%~5) ELSE (SET threads=1)
  10. SET "level=%level:-l=%"
  11. IF /I %level% GTR 9 SET level=6
  12. IF /I %level% LSS 1 SET level=6
  13. SET "size=%size:-s=%"
  14. IF /I %size% LSS 1 SET size=128
  15. SET "threads=%threads:-t=%"
  16. IF "%threads%"=="0" SET threads=%NUMBER_OF_PROCESSORS%
  17. IF "%threads%"=="" (SET threads=1)
  18. IF "%threads%"=="3" (SET threads=2)
  19. IF "%threads%"=="5" (SET threads=4)
  20. IF "%threads%"=="7" (SET threads=6)
  21. IF /I %threads% GTR 8 (SET threads=8)
  22. ECHO %level% > .l%level%
  23. ECHO Recompressing file with reflate
  24. rawdet "%~1" .out .str > NUL
  25. FOR %%F IN (*.raw) DO (IF /I %%~zF GTR %size% (SET /A maxsize+=1))
  26. IF %threads%==1 (
  27. FOR %%F IN (*.raw) DO (
  28. IF /I %%~zF GTR %size% (
  29. raw2hif c%level% "%%~F" "%%~F.unp" "%%~F.hif"
  30. DEL /Q "%%~F"
  31. SET /A cursize+=1
  32. SET /A prcomp=!cursize!*100/%maxsize%
  33. IF /I !prcomp! GTR 100 SET prcomp=100
  34. CLS
  35. ECHO.Processing extracted deflate streams: !prcomp!%% complete
  36. ECHO.raw2hif: %%~nF [%%~zF bytes]
  37. TITLE !prcomp!%%
  38. )
  39. )
  40. goto:cleanup
  41. ) ELSE (
  42. IF %threads%==2 (
  43. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*0.raw *2.raw *4.raw *6.raw *8.raw *A.raw *C.raw *E.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  44. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*1.raw *3.raw *5.raw *7.raw *9.raw *B.raw *D.raw *F.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  45. ) ELSE (
  46. IF %threads%==4 (
  47. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*0.raw *1.raw *2.raw *3.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  48. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*4.raw *5.raw *6.raw *7.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  49. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*8.raw *9.raw *A.raw *B.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  50. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*C.raw *D.raw *E.raw *F.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  51. ) ELSE (
  52. IF %threads%==6 (
  53. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*0.raw *6.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  54. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*1.raw *7.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  55. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*2.raw *8.raw *C.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  56. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*3.raw *9.raw *D.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  57. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*4.raw *A.raw *E.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  58. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*5.raw *B.raw *F.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  59. ) ELSE (
  60. IF %threads%==8 (
  61. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*0.raw *8.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  62. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*1.raw *9.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  63. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*2.raw *A.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  64. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*3.raw *B.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  65. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*4.raw *C.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  66. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*5.raw *D.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  67. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*6.raw *E.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  68. START /MIN /BELOWNORMAL cmd /Q /C FOR %%F IN ^(*7.raw *F.raw^) DO ^(IF /I %%~zF GTR %size% ^(ECHO.raw2hif: %%~nF [%%~zF bytes] ^& raw2hif c%level% "%%~nxF" "%%~nF.unp" "%%~nF.hif" ^&^& DEL /Q "%%~F"^)^)
  69. )))))
  70. :wait
  71. SET cursize=0
  72. FOR %%F IN (*.raw) DO (IF /I %%~zF GTR %size% SET /A cursize+=1)
  73. IF NOT !cursize!==0 (
  74. SET /A waittime=!cursize!/100
  75. IF /I !waittime! LSS 3 SET waittime=3
  76. SET /A cursize=%maxsize%-!cursize!
  77. SET /A prcomp=!cursize!*100/%maxsize%
  78. IF /I !prcomp! GTR 100 SET prcomp=100
  79. REM CLS
  80. ECHO.Processing extracted deflate streams: !prcomp!%% complete
  81. TITLE !prcomp!%%
  82. timeout /T !waittime! /NOBREAK > NUL
  83. goto:wait
  84. )
  85. :cleanup
  86. FOR %%F IN (*.raw) DO (
  87. IF EXIST "%%~dpnF.hif" DEL /Q "%%~dpnF.raw"
  88. )
  89. arc.exe a -tzip -mx0 -ep1 -x"%~nx1" -- "%~nx2" *.* > NUL
  90. DEL /Q *.hif
  91. DEL /Q *.unp
  92. DEL /Q *.raw
  93. DEL /Q .l%level%
  94. DEL /Q .out
  95. DEL /Q .str
  96. goto:eof

reflate_c.cmd