Использование цикла для архивирования нескольких подпапок в основной папке

У меня есть основная папка с 3 подпапками...

  • C:\Users\Admin\Folder
    • Folder1
    • Папка2
    • Папка3

Я хочу, чтобы пакетный скрипт захватил первый подкаталог Folder1, скопировал его в другое место, например C:\Temp\Folder, а затем WinRAR начал архивировать Folder1. После копирования Folder1 в другое место его можно удалить в основной папке.

После завершения архивации WinRAR Folder1 также можно удалить в C:\Temp\Folder. Так что остаются только файлы .rar.

Затем скрипт начинается заново с Folder2 и делается то же самое, что и с Folder1.

Пока имею только это и не очень знаю как реализовать вышеописанное.

"C:\Program Files\WinRAR\Rar.exe" a -ep1 -mt5 -v50M -r -df "NAME-OF-THE-RAR-FILE" "C:\Users\Admin\Folder\*.*"

person BASF    schedule 20.03.2015    source источник
comment
Что такое подкаталог first? Следующее описание непонятно: after copy Folder 1 have to be delete in the main folder and then rar the Folder.   -  person Endoro    schedule 21.03.2015
comment
Например: в C:\Users\Admin\Folder\ находятся подпапки 1-3 Folder1 Folder2 Folder3 ... После копирования папки 1 я имею в виду, что после копирования подпапки 1 в новый каталог c:\temp\ Папка для процесса Rar, ее можно удалить в основной папке C:\Users\Admin\Folder   -  person BASF    schedule 21.03.2015
comment
Скорректировали вверх и теперь надежда понятна. правила   -  person BASF    schedule 21.03.2015


Ответы (1)


Откройте окно командной строки, введите и выполните for /? и прочитайте справку по этой команде. Опция /D описана уже на первой странице справки, которая предназначена для выполнения команд в каждом подкаталоге каталога.

Приведенный ниже пакетный файл архивирует каждую подпапку в C:\Users\Admin\Folder с помощью консольной версии WinRAR с помощью команды m (переместить = заархивировать и удалить в случае успеха) вместо команды a с ключом -df.

@echo off
for /D %%F in ("C:\Users\Admin\Folder\*") do (
    "%ProgramFiles%\WinRAR\Rar.exe" m -cfg- -ep1 -inul -m5 -mt5 -r -tl -v50M -y "%%~F.rar" "%%~F\"
    rd "%%~F"
)

Итак, результат

  • C:\Users\Admin\Folder
    Папка1.rar
    Папка2.rar
    Папка3.rar

Папка может содержать еще больше файлов после архивирования и удаления папок в зависимости от размера всех файлов папок и того, сколько томов по 50 МБ необходимо для архивирования каждой папки.

Имя папки Folder1 не включено в файл Folder1.rar из-за обратной косой черты в последнем параметре "%%~F\" в конце третьей строки.

Пакетный файл может быть еще проще, если имя папки Folder1 также будет включено в файл архива Folder1.rar

@echo off
for /D %%F in ("C:\Users\Admin\Folder\*") do (
    "%ProgramFiles%\WinRAR\Rar.exe" m -cfg- -ep1 -inul -m5 -mt5 -r -tl -v50M -y "%%~F.rar" "%%~F"
)

Я не думаю, что копирование каждой папки во временную папку только для архивации здесь необходимо.

person Mofi    schedule 21.03.2015
comment
Во-первых, спасибо, теперь у меня есть это c: cd \Users\Admin\Folder "C:\Program Files\WinRAR\Rar.exe" a -ep1 -mt5 -m1 -v100M -r -df "Description" "C:\Users\Admin\NewFolder\*.*, я пытаюсь, чтобы winrar захватил только папку 1, чтобы разделить ее в новой папке \Users\Admin\NewFolder, затем удалил папку 1 -df под \Users\Admin\Folder, чтобы остались папки 2, папки 3 и start my.bat, чтобы снова выполнить свою работу со следующей папкой (Папка2) ... - person BASF; 22.03.2015