2017-07-17 3 views
-2

Je veux écrire un script batch qui ajoute le fichier readme.txt à certains répertoires, puis compresser le répertoire entier.Comment ajouter un fichier readme à chaque sous-dossier d'un dossier en les compressant dans des fichiers d'archive RAR?

Exemple:

@ECHO OFF 
for /D %%f in ("C:\directory_with_files_you_want_to_compress\ *") do copy "C:\directory_with_readme.txt\readme.txt" "%%f\" 
cd C:\directory_with_files_you_want_to_compress 
SET PATH=C:;C:\Program Files (x86)\WinRAR;C:\Windows\system32;C:\Windows;C:\Win dows\System32\Wbem;%PATH% 
FOR /f "delims=" %%d IN ('DIR /B') DO WinRAR a -m0 -ep -df -v100m -x*.rar "C:\where_you_want_to_save_new_rar_files\%%~nxd.ra r" "%%~fd" 
EXIT 

Mais il n'ajoute pas readme.txt aux fichiers RAR.

Répondre

0

Cela est très facile à réaliser car la version de la console Rar.exe ainsi que la version GUI WinRAR.exe supportent plusieurs fichiers ou répertoires à spécifier sur la ligne de commande pour ajouter dans le même fichier archive.

@echo off 
for /D %%D in ("C:\directory_with_files_you_want_to_compress\*") do "%ProgramFiles(x86)%\WinRAR\Rar.exe" a -cfg- -ep -idq -m0 -x*.rar -v100m "C:\where_you_want_to_save_new_rar_files\%%~nxD.rar" "%%~fD\" "C:\directory_with_readme.txt\readme.txt" && rd /Q /S "%%~fD" || echo/ && pause 

Comme ci-dessus plus facile à lire:

@echo off 
for /D %%D in ("C:\directory_with_files_you_want_to_compress\*") do (
    "%ProgramFiles(x86)%\WinRAR\Rar.exe" a -cfg- -ep -idq -m0 -x*.rar -v100m -y "C:\where_you_want_to_save_new_rar_files\%%~nxD.rar" "%%~fD\" "C:\directory_with_readme.txt\Readme.txt" 
    if not errorlevel 1 (
     rd /Q /S "%%~fD" 
    ) else (
     echo/ 
     pause 
    ) 
) 

Le code de lot utilise la version de la console Rar.exe au lieu de la version GUI WinRAR.exe car il n'y a absolument pas nécessaire d'utiliser la version GUI pour ce fichiers d'archive tâche de création.

Le commutateur -df supprimer tous les fichiers compressés par Rar est retirée en raison de readme.txt ne doit pas être supprimée automatiquement par Rar après le traitement du premier sous-répertoire. Ce fichier doit également être ajouté aux autres fichiers d'archive à créer pour les autres sous-répertoires. Au lieu de cela, la commande RD est utilisée pour supprimer le sous-répertoire déjà traité avec succès. Sur une erreur comme l'archive RAR à créer existe déjà et est protégé en écriture une ligne vide est sortie avec echo/ et le traitement est arrêté avec pause.

Le commutateur -idq est ajouté pour exécuter Rar en mode silencieux, ce qui entraîne des erreurs de sortie uniquement. Les commutateurs -m0 et -v100m aboutissent au stockage juste au lieu de vraiment compresser tous les fichiers de chaque sous-répertoire dans une archive RAR multi-volume avec 100 Mo par volume. Ce fichier batch est donc évidemment utilisé pour compresser des fichiers d'archive, audio, image ou vidéo déjà compressés en archives multi-volumes.

Le commutateur -y est ajouté aux invites automatiquement possibles avec oui.

Tous les commutateurs sont documentés dans le fichier texte Rar.txt dans WinRAR dossier de fichiers programme.

j'ajouté après %%~fD une barre oblique inverse en cas de quelqu'un d'autre veut utiliser ce code avec interrupteur -ep1 au lieu de -ep et l'ajout du commutateur -r pour archiver récursive chaque sous-répertoire sans avoir le nom sous-répertoire ajouté à l'archive aussi. Les commutateurs utilisés archivent uniquement les fichiers dans chaque sous-répertoire, mais pas leurs sous-répertoires, bien que le sous-répertoire traité soit complètement supprimé après la création d'une archive RAR à plusieurs volumes.

Voir aussi les réponses aux questions suivantes: