2017-03-07 1 views
0

Je souhaite automatiser la compression de plusieurs fichiers dans un répertoire unique, chacun avec le même mot de passe, depuis la ligne de commande ou avec une application.Ligne de commande winrar: créer plusieurs fichiers winrar avec mot de passe à partir d'un répertoire

fichier_1 -> fichier_1 (p/mot de passe) Rar

file2 -> file2 (p/mot de passe) Rar

file3 -> file2 (p/mot de passe) Rar

Le répondre à Packing (WinRAR) with a password on a group of files est proche de ce que je veux, mais beaucoup trop compliqué pour mes besoins.

Je sais que l'inverse peut être fait facilement à partir de la ligne de commande.

Des pensées? Merci.

+0

Veuillez noter que https://stackoverflow.com n'est pas un service d'écriture de code/code gratuit. Si vous nous dites ce que vous avez essayé jusqu'à présent (incluez les scripts/code que vous utilisez déjà) et où vous êtes coincé, alors nous pouvons essayer d'aider avec des problèmes spécifiques. Vous devriez également lire [Comment poser une bonne question?] (Https://stackoverflow.com/help/how-to-ask). – DavidPostill

Répondre

0

Voici un code de lot pour cette tâche simple avec un bonus supplémentaire:
Le répertoire de travail peut être transmis au fichier de commandes en tant que premier paramètre.
Le répertoire en cours est utilisé si le fichier de commandes est démarré sans paramètre.

@echo off 
setlocal EnableExtensions DisableDelayedExpansion 
set "WorkingDirectory=" 
if "%~1" == "" goto ArchiveFiles 

set "WorkingDirectory=%~1" 
if "%WorkingDirectory:~-1%" == "\" (
    if exist "%WorkingDirectory%*" pushd "%WorkingDirectory%" & goto ArchiveFiles 
) else (
    if exist "%WorkingDirectory%\*" pushd "%WorkingDirectory%" & goto ArchiveFiles 
) 
echo Directory "%WorkingDirectory%" does not exist. 
endlocal 
goto :EOF 

:ArchiveFiles 
for /F "delims=" %%I in ('dir /A-D /B * 2^>nul') do (
    if /I not "%%~xI" == ".rar" (
     "%ProgramFiles%\WinRAR\Rar.exe" a [email protected] -cfg- -ep1 -idq -m5 -ma4 "-pPassword" -r- -s- -y -- "%%~nI.rar" "%%~fI" 
    ) 
) 
if not "%WorkingDirectory%" == "" popd 
endlocal 

Ce fichier de traitement par lots ignore les fichiers * .rar déjà présents dans le répertoire.

Ouvrir dans le dossier de fichiers programme WinRAR le fichier texte Rar.txt pour plus de détails sur commande utilisée a et les commutateurs utilisés. 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.

  • call /? ... explique %~1
  • dir /?
  • echo /?
  • endlocal /?
  • for /?
  • goto /?
  • if /?
  • popd /?
  • pushd /?
  • set /?
  • setlocal /?

Lire aussi l'article Microsoft à propos Using Command Redirection Operators expliquant 2>nul où dans ce code l'opérateur de redirection > doit être échappé avec caret ^ être d'abord interprété comme littéral caractère lors de l'analyse FOR ligne de commande et en tant qu'opérateur de redirection lors de l'exécution de DIR par POUR.

Et lire aussi la réponse sur Single line with multiple commands using Windows batch file pour comprendre la signification de l'opérateur & tel qu'utilisé ici sur deux lignes de commande.