2010-06-02 16 views
2

J'essaie d'utiliser WinRAR pour compresser tous mes différents dossiers individuellement.Comment archiver séparément chaque dossier dans un répertoire à l'aide de WinRAR?

Exemple de contenu du dossier avant

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

et après l'exécution du fichier batch

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

Je suis en train de la commande suivante dans un fichier batch. Mais il compresse tous les dossiers dans le dossier des projets étant dans l'archive de sauvegarde:

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 contient tous les fichiers que je veux dans les archives séparées.

Comment modifier les 3 lignes dans un fichier batch pour obtenir les archives souhaitées?

Répondre

1

Je pense que vous devez changer quelques choses.

  1. changement /A-/AD pour obtenir seulement les répertoires.
  2. Supprimez le /S de sorte que vous n'obtiendrez que les répertoires de premier niveau dans C:\Projects.
  3. l'intérieur de votre boucle FOR, changer le "c:\backup\projects.rar" à C:\Backup\%%D.rar"

AVERTISSEMENT: Ce code est non testé.

FOR /F "DELIMS==" %%D in ('DIR C:\projects /AD /B') DO ( 
    "C:\Program Files\WinRAR\WinRAR.EXE" m -r "C:\Backup\%%D.rar" "%%D" 
) 
+0

Salut merci pour votre réponse, j'ai essayé que POUR/F "DELIMS ==" %% D dans ('DIR C: \ projets/AD/B') DO ( "C: \ Program Files \ WinRAR \ WinRAR.EXE "m -r" C: \ Backup \ %% D.rar "" %% D " ) mais cela n'a pas fonctionné. – Jessie

+0

Hmmm ... Recevez-vous des messages? – aphoria

+0

non il ne fonctionne que, l'écran noir sort, mais les fichiers restent dans c: \ projects et rien dans c: \ backup :( – Jessie

0

Voici un fichier batch pour un usage plus général de cette tâche commune car le dossier avec les archives des sous-dossiers à peut être spécifié comme premier paramètre sur l'exécution du fichier de commandes.

@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 

Pour plus de détails sur les commutateurs utilisés sur Rar ligne de commande fichier texte ouvert Rar.txt dans les fichiers du dossier programme de WinRAR qui est le manuel de la version de la console Rar.exe et lisez les explications pour ces commutateurs.

Note: Commande un (ajouter à archiver) est utilisé dans le code de lot ci-dessus au lieu de m (passage à archives).

Le manuel d'utilisation WinRAR.exe à partir d'un fichier de commandes se trouvent dans l'aide de WinRAR sur l'onglet Contenu au titre du point mode ligne de commande.

Il existe quelques différences sur la liste des commutateurs entre la console et la version GUI de WinRAR. Par exemple WinRAR.exe prend également en charge la création d'archives ZIP que Rar.exe ne prend pas en charge. Par conséquent WinRAR.exe prend en charge le commutateur -af<type> quelle version de la console ne fonctionne pas.Ou le commutateur -idq (mode silencieux) de la version de la console est le commutateur -ibck (exécuté en arrière-plan) pour la version de l'interface graphique. Pour comprendre les commandes utilisées et leur fonctionnement, ouvrez une fenêtre d'invite de commande, exécutez les commandes suivantes et lisez attentivement toutes les pages d'aide affichées pour chaque commande.

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

Note: Un tel archivage peut également être fait avec WinRAR en sélectionnant dans WinRAR les dossiers à archiver, en cliquant sur Ajouter icône dans la barre d'outils, l'insertion C:\Backup\ sur Nom de l'archive et l'option d'activation Placez chaque fichier dans une archive séparée dans l'onglet Fichiers. Les autres options utilisées dans le fichier de commandes ci-dessus définies via des commutateurs se trouvent dans les onglets Général, Sauvegarde et Heure.