3

WinRARを使用して、すべての異なるフォルダを個別に圧縮しようとしています。

以前のフォルダコンテンツの例

c:\projects\test
c:\projects\country
c:\projects\db

バッチファイルを実行した後

c:\backup\test.rar
c:\backup\country.rar
c:\backup\db.rar

バッチファイルで次のコマンドを試しています。ただし、バックアップアーカイブにあるプロジェクトフォルダ内のすべてのフォルダを圧縮します。

for /f "delims==" %%D in ('DIR C:\projects /A /B /S') do (
    "C:\Program Files\WinRAR\WinRAR.EXE" m -r "c:\backup\projects.rar" "%%D"
)

c:\backup\projects.rar別々のアーカイブに必要なすべてのファイルが含まれています。

バッチファイルの3行を変更して、目的のアーカイブを取得するにはどうすればよいですか?

4

2 に答える 2

1

私はあなたがいくつかのことを変える必要があると思います。

  1. に変更/A/ADて、ディレクトリのみを取得します。
  2. を削除して/S、の最上位ディレクトリのみを取得するようにしますC:\Projects
  3. FORループ内で、をに変更"c:\backup\projects.rar"しますC:\Backup\%%D.rar"

警告:このコードはテストされていません。

FOR /F "DELIMS==" %%D in ('DIR C:\projects /AD /B') DO ( 
  "C:\Program Files\WinRAR\WinRAR.EXE" m -r "C:\Backup\%%D.rar" "%%D" 
)
于 2010-06-02T13:33:21.523 に答える
1

アーカイブするサブフォルダーを含むフォルダーは、バッチファイルを実行する際の最初のパラメーターとして指定できるため、この一般的なタスクのより一般的な使用法のバッチファイルを次に示します。

@echo off
setlocal
set "BackupFolder=C:\Backup"

rem Folder to archive can be optionally specified as parameter.
if "%~1" == "" (
    set "FolderToArchive=C:\projects"
) else (
    set "FolderToArchive=%~1"
)

rem Check existence of the folder to archive.
if not exist "%FolderToArchive%\*" (
    echo.
    echo Error: Folder %FolderToArchive% does not exist.
    echo.
    endlocal
    pause
    goto :EOF
)

rem Check existence of backup folder and create this folder
rem if not already existing with verification on success.
if not exist "%BackupFolder%\*" (
    md "%BackupFolder%"
    if errorlevel 1 (
        echo.
        echo Error: Folder %BackupFolder% could not be created.
        echo.
        endlocal
        pause
        goto :EOF
    )
)

rem Archive each subfolder in specified or default folder to archive
rem as separate archive with name of folder as archive file name and
rem with current date and an automatically incremented number with at
rem least 2 digits appended to the archive file name to be able to
rem create multiple archives on different days and even on same day.

rem Parent directory path of each subfolder is removed from archive.
rem The name of the subfolder itself is added to each archive. This
rem can be changed by replacing "%%D" with "%%D\" or "%%D\*". Then
rem the files and subfolders of the compressed folder would be added
rem to archive without the name of the compfessed folder.

rem Best compression is used on creating a solid archive with 4 MB
rem dictionary size. All messages are suppressed except error messages.
rem The last modification time of the created archive file is set to
rem date and time of newest file inside the archive.

set "RarError=0"

for /D %%D in ("%FolderToArchive%\*") do (
    echo Archiving %%D ...
    "%ProgramFiles%\WinRAR\Rar.exe" a -ag_YYYY-MM-DD_NN -cfg- -ep1 -idq -m5 -md4m -r -s -tl -y "%BackupFolder%\%%~nD.rar" "%%D"
    if errorlevel 1 set "RarError=1"
)

rem Wait for a key press if an error occurred on creating an archive file.
if "%RarError%" == "1" (
    echo.
    pause
)
endlocal

Rarコマンドラインで使用されるスイッチの詳細については、コンソールバージョンのマニュアルであるWinRARRar.txtのプログラムファイルフォルダにあるテキストファイルを開き、それらのスイッチの説明を読んでください。Rar.exe

注:コマンドa (アーカイブに追加)は、 m (アーカイブに移動)の代わりに上記のバッチコードで使用されます。

WinRAR.exeバッチファイル内から使用するためのマニュアルは、 WinRARのヘルプの[コマンドラインモード]の[コンテンツ]タブにあります。

WinRARのコンソールバージョンとGUIバージョンの間のスイッチのリストにはいくつかの違いがあります。たとえば、サポートしていないWinRAR.exeZIPアーカイブの作成もサポートします。Rar.exeしたがって、コンソールバージョンがWinRAR.exeサポートしていないスイッチをサポートします。-af<type>または、-idqコンソールバージョンのスイッチ(クワイエットモード)は-ibck、GUIバージョンのスイッチ(バックグラウンドで実行)です。

使用するコマンドとその動作を理解するには、コマンドプロンプトウィンドウを開き、そこで次のコマンドを実行して、各コマンドに表示されるすべてのヘルプページを注意深く読んでください。

  • echo /?
  • endlocal /?
  • for /?
  • if /?
  • md /?
  • pause /?
  • rem /?
  • set /?
  • setlocal /?

注:このようなアーカイブは、 WinRARでアーカイブするフォルダーを選択し、ツールバーの[追加]アイコンをクリックし、[アーカイブ名]を挿入して、[ファイル]タブの[各ファイルを個別のアーカイブに配置する]オプションを有効にすることで、 WinRARでも実行できます。スイッチを介して定義された上記のバッチファイルで使用される他のオプションは、[一般] 、 [バックアップ]、および[時間]タブにあります。C:\Backup\

于 2016-04-24T13:49:22.297 に答える