batch-filewinrar

How to compress each subfolder in a folder into separate RAR archives with rar.exe using a batch script?


I have multiple folders inside N:\working.

I want to RAR compress them all individually on 64-bit Windows.

Here is the code I have so far:

@ECHO OFF
CD N:\working

SET rar_executable=C:\Rar.exe
ECHO  Using WinRAR executable: %rar_executable%

ECHO.
%rar_executable% a -r -ep1 -m0 "Test.rar"

pause

It produces the file Test.rar containing all three folders. But I want to archive the three folders into the archive files 1.rar, 2.rar and 3.rar.


Solution

  • That task can be done with a batch file containing only a single command line.

    @for /D %%I in ("N:\working\*") do @"%ProgramFiles%\WinRAR\Rar.exe" a -cfg- -ep1 -inul -m5 -r -- "%%I.rar" "%%I\"
    

    The same command line for usage in a command prompt window without using a batch file:

    for /D %I in ("N:\working\*") do "%ProgramFiles%\WinRAR\Rar.exe" a -cfg- -ep1 -inul -m5 -r -- "%I.rar" "%I\"
    

    There is no @ left to for as that would be completely useless on running this command line in a command prompt window. @ left to Rar.exe with full qualified file name is removed to see the command line output by cmd.exe when a new archive file creation starts.

    FOR searches in specified directory N:\working for non-hidden subdirectories and assigns the full qualified directory name to loop variable I before executing Rar.exe for this subdirectory.

    Rar.exe adds (a) recursively (-r) all directories and files in the subdirectory found by FOR to a RAR archive file with name of the current subdirectory and file extension .rar created in the specified directory N:\working using best compression (-m5) without any output to console window and ignoring all errors (-inul) which could occur during folder compression. The standard configuration is ignored (-cfg-) on compression. The name of the compressed subdirectory with its path is not added to the RAR archive file (-ep1 and folder to compress ends with a backslash).

    Open a command prompt window, run for /? and read the output help explaining option /D (directory search).

    Open text file Rar.rxt in program files folder of WinRAR with a double click which is the manual of Rar.exe explaining the command a and the switches used here.

    This task could be also done with WinRAR.exe using a profile created before with starting WinRAR.exe with the profile name as only option on the command line stored in a shortcut file. This solution would not open a console window because of WinRAR.exe is a Windows GUI desktop application.