複数のファイルを複数のアーカイブに圧縮しますか?

複数のファイルを複数のアーカイブに圧縮しますか?

フォルダーに PDF がいっぱいあるのですが、各ファイルを個別に Winrar するのにうんざりしています。すべてを 1 つのアーカイブにまとめたくありません。

Winrar でファイルを最適な方法で圧縮し、.rar を作成した後にファイルを削除し、次のファイルに対して同じことを実行するコマンド ラインはありませんか?

答え1

はい、WinRAR のインストール フォルダーに実行可能ファイル rar.exe があります。パラメーターなしで実行すると、使用方法の完全なヘルプが表示されます。たとえば、-m5 スイッチを使用して最適な圧縮レベルを設定します。

すでに述べたように、バッチ/シェル スクリプトはこれを実行するのに適した方法ですが、同様の目標を持つこのプロジェクトも興味深いかもしれません。http://code.google.com/p/autorar/

答え2

これは、rar アーカイバ (winrar5 形式) を使用して各ファイルを個別に圧縮するために作成したスクリプトです。フォルダー内のすべての *.pdf ファイルを個別に圧縮するには、このスクリプトを .bat ファイルに入れて実行する必要があります。最初に、ファイルが配置されている開始 (ルート) ディレクトリを指定し、次にそのディレクトリで検索して圧縮する拡張子を指定できます (再帰検索、ルート ディレクトリのサブディレクトリに入る)

@echo off

REM -m5 max compression    
REM -md64m dictionary size 64m
REM -s solid
REM -ma5 rar5 format (rar4 - ma4)
REM -y yes to all
REM -t test after packing (if test NOT ok, then files will not be deleted if the -df/-dr specified)
REM -df delete files after successful archivation
REM -ep1 exclude base folder of file from archive
:: %%~nZ - file name extracted from var Z
:: %%~fZ - full path of file+ext from var Z
:: %%~dpZ - disk+path
:: setlocal - use local environment vars
setlocal

:step1
    echo Enter start path where files a located
    set /p rarpath=
    echo.
    :: remove doublequotes from path
    set rarpath=%rarpath:"=%

:check dir exist
    if not exist "%rarpath%" echo   "!!!  [%rarpath%] doesn't exist, please enter correct path  !!!"
    if not exist "%rarpath%" echo.
    if not exist "%rarpath%" goto step1
:::::
:::::
    echo.
    echo Enter which extensions to compress (like *.mp4;*.wmv)
    set /p exten=
    echo.
:::::
:::::
    echo.
    echo Final command: 
    echo for /R "%rarpath%" %%Z in (%exten%) do "%programfiles%\WinRAR\rar.exe" a -ma5 -m5 -s -md64m -t -y -ep1 -df "%%~nZ.rar" "%%~fZ"
    echo.
:::::
:::::
    echo.
    echo Continue? [y/n]
    set /p go=
    if /i %go%==Y goto ok
    if /i %go%==N goto exit

:ok
:: CD to each file's directory, compress file, log output (codepage 866)
set rartime=%time:~0,8%
set rartime=%rartime::=_%
set rartime=%rartime: =%
set rarlog=rar_log_%date%_%rartime%.txt
:: For directories located in current directory
:: for /d %D in (*) do "%programfiles%\winrar\rar.exe" a -ma5 -m5 -s -md64m -t -y -ep1 -df "%D.rar" "%D"

    for /R "%rarpath%" %%Z in (%exten%) do (
        cd /d %%~dpZ
        "%programfiles%\WinRAR\rar.exe" a -ma5 -m5 -s -md64m -t -y -ep1 -df "%%~nZ.rar" "%%~fZ" >> c:\%rarlog% 2>&1
        type c:\%rarlog%
        echo. >> c:\%rarlog%
        echo ----------------------------------------------------------------------------- >> c:\%rarlog%
        echo. >> c:\%rarlog%
    )
    echo.
    echo.
    echo        !!! All Done !!!
    pause
    goto :EOF
    ::EXIT /B 0

:exit
    echo Program terminated
    pause
    goto :EOF

関連情報