sbh
@sbh

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

Есть много папок, в каждой из папок по 1 файлу.
Как рекурсивно скриптом заархивировать каждый из файлов и удалить исходный?
  • Вопрос задан
  • 399 просмотров
Пригласить эксперта
Ответы на вопрос 3
@res2001
Developer, ex-admin
В предположении, что все папки находятся в одном корневом каталоге (в примере c:\tmp), то примерно так будет:
@echo off
set "source_dir=c:\tmp"
for /f "tokens=* delims=" %%a in ('dir /s/b "%source_dir%\*" ') do (
  rar a "%%~dpna" "%%~fa"
  del /f/q "%%~fa"
)

Если папки разбросаны по разным местам, то нужно вносить изменения, например хранить список папок в текстовом файле или в переменной, затем в цикле перебирать каждую папку и упаковывать. Схема будет похожа на вышеприведенный скрипт, немного изменится цикл. Более предпочтительным видится вариант хранения списка папок в отдельном текстовом файле

В вопросе ничего не сказано куда записывать архивы. Если их записывать туда же, где были исходные файлы, то при повторном вызове скрипта будет конфликт. Нужно предусмотреть пропуск архивных файлов.
Ответ написан
Комментировать
ApeCoder
@ApeCoder
Типа такого (не проверял) Powershell
ls -Recurse -Attributes !Directory | %{ Compress-Archive $_.FullName ($_.FullName+".zip"); rm $_.FullName}
Ответ написан
Комментировать
Ezhyg
@Ezhyg
@echo off
for %%a in (*) do Rar.exe a -inul "%%a".rar "%%a"

и другие примеры
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы