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.
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