Как удалить файлы при создании архива сразу после добавления в архив?

Я пытался использовать утилиту командной строки WinRAR rar.exe, но она всегда сначала создает архив, а затем удаляет исходный файл после того, как архив уже создан.

По сути, я пытаюсь добавить несколько больших файлов в один архив, но мне не хватает свободного места.

Что происходит на самом деле:

  1. File1 добавлен в архив x.rar
  2. Файл2 добавлен в архив x.rar
  3. Файл3 добавлен в архив x.rar
  4. Файл1 удален
  5. Файл2 удален
  6. Файл3 удален

Чего я надеюсь достичь:

  1. File1 добавлен в архив x.rar
  2. Файл1 удален
  3. Файл2 добавлен в архив x.rar
  4. Файл2 удален
  5. Файл3 добавлен в архив x.rar
  6. Файл3 удален

Есть ли способ сделать это?


person nyshone    schedule 08.04.2019    source источник
comment
Что произойдет, если что-то остановит процесс (например, закончится свободное место на диске) и архив не может быть создан, а файлы уже удалены?   -  person Ken White    schedule 08.04.2019
comment
Да, есть способ, но я обязательно прислушаюсь к совету Кена Уайта! стандартный способ самый безопасный. В любом случае, чтобы безопасно (!?) сделать это по-своему, вы можете сделать это в цикле: добавить файл во временный архив, скопировать временный архив в конечное место (перезаписать предыдущий), удалить файл в случае успеха; чтобы в случае чего у вас были уже обработанные файлы в финальном архиве; хотя этот подход будет медленным; единственным преимуществом может быть максимальное количество занимаемого места на диске, в зависимости от достижимой степени сжатия, количества файлов...   -  person aschipfl    schedule 09.04.2019


Ответы (1)


Приведенный ниже пакетный файл можно использовать для перемещения одного файла за другим в указанной исходной папке в архив RAR.

@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "SourceFolder=C:\Temp"

for /F "eol=| delims=" %%I in ('dir "%SourceFolder%\*" /A-D /B 2^>nul') do "%ProgramFiles%\WinRAR\Rar.exe" m -cfg- -ep -idcdp -m4 -y -- "%SourceFolder%\Archiv.rar" "%SourceFolder%\%%I" || goto CreationError
goto EndBatch

:CreationError
echo/
pause

:EndBatch
endlocal

Но я сомневаюсь, что это действительно полезно для вас, если недостаточно места для хранения, чтобы создать файл архива с большими файлами один за другим. Rar.exe должен создать временную копию существующего файла архива при обновлении существующего файла архива с добавлением еще одного файла, что, скорее всего, снова приведет к состоянию нехватки свободного места для хранения.

Удаление файла сразу после его добавления невозможно без запуска двух процессов. Первый процесс запускает Rar.exe как отдельный процесс, но построчно захватывает его выходные данные и удаляет файл, добавленный Rar.exe в архив, в то время как Rar.exe работает как отдельный процесс. Но я думаю, что этого невозможно добиться с помощью командного файла.

Я предлагаю Запустить от имени администратора инструмент Windows Очистка диска и использовать его для удаления всех файлов, которые больше не нужны. Очистка Центра обновления Windows, предлагаемая инструментом Windows Очистка диска, при запуске от имени администратора обычно освобождает несколько гигабайт дискового пространства в этом инструменте очистки, который раньше никогда не запускался. После выполнения необходимой перезагрузки Windows вручную, хотя и не отображается, что перезагрузка Windows необходима для завершения очистки Центра обновления Windows, удалите вручную от имени администратора все папки и файлы в папке %SystemRoot%\SoftwareDistribution\Download (пакеты обновлений безопасности Windows, уже установленные после перезагрузки Windows а иногда не удаляются автоматически, как это всегда должно делать Центр обновления Windows) и в папке %SystemRoot%\Temp (папка временных файлов системных процессов), чтобы получить еще больше свободного места для хранения. Пожалуйста, дождитесь перезагрузки Windows, пока снова не отобразится рабочий стол Windows, даже если 100% готовности отображается более часа. Microsoft забыла включить процесс удаления файлов в процентное обозначение и по какой-то неизвестной причине требует очень много времени для удаления тысяч файлов, которые больше не нужны из-за того, что они уже заменены более новыми обновлениями безопасности Windows. Обратите внимание, что никогда ранее не выполнявшаяся очистка Центра обновления Windows может занять несколько часов, особенно в Windows 8/8.1/10, где она всегда занимает гораздо больше времени, чем в Windows 7.

Наконец, очистите также файловый кеш (ы) используемого интернет-браузера (ов), чтобы получить больше свободного места для хранения при запуске уже из свободного места для хранения.

person Mofi    schedule 09.04.2019