Вменяемый метод
Если у вас достаточно большой флеш-накопитель (или сетевой ресурс с возможностью записи, например, другой компьютер с поддержкой CIFS в сети), вы можете извлечь один файл за раз из архива, а затем удалить его из архива, используя (~ 20 ГБ бесплатно) "другое пространство" как временное / временное местоположение. Каждая утилита архивирования, с которой я когда-либо работал, может указать альтернативное временное местоположение.
В этом примере сценария используется 7-zip (а также grep и sed):
@ECHO OFF
SETLOCAL
SET ARCHIVE=temp.zip
SET SCRATCH_PATH=D:\temp
SET DEST_DIR=%~dp0\extracted
FOR /F "delims=*" %%f IN ('7z.exe l "%ARCHIVE%" -slt ^| grep -B1 "Folder = -" ^| grep "Path = " ^| sed "s/Path = //"') DO (
@ECHO.
@ECHO %%~f
7z.exe x -y -o"%DEST_DIR%" -w"%SCRATCH_DIR%" "%ARCHIVE%" "%%~f" >NUL
7z.exe d -w"%SCRATCH_DIR%" "%ARCHIVE%" "%%~f" >NUL
FOR %%g IN (%ARCHIVE%) DO @ECHO %ARCHIVE%: %%~zg
)
Это функционально правильно, хотя я не пытался создать файл, слишком большой, чтобы извлечь его на моем компьютере, просто чтобы проверить его.
Безумный метод
Вы также можете временно сжать некоторые файлы на жестком диске, которые, как вы знаете, вам не понадобятся во время процесса извлечения (например, Office), чтобы освободить достаточно места для извлечения файлов, а затем полностью изменить процесс после завершения извлечения.