Tengo una carpeta llena de archivos PDF y estoy cansado de Winraring cada archivo por separado. No quiero ponerlos todos en un solo archivo.
¿No existe una línea de comando que pueda usar para hacer que Winrar comprima un archivo con el mejor método, elimine el archivo después de crear el .rar y luego haga lo mismo con el siguiente archivo?
Respuesta1
Sí, hay un rar.exe ejecutable en la carpeta de instalación de WinRAR. Ejecutarlo sin parámetros le muestra ayuda completa sobre su uso. Por ejemplo, establece el mejor nivel de compresión con el modificador -m5.
Como se ha dicho, el script por lotes/shell es una buena forma de hacerlo, pero puede que le resulte interesante este proyecto con objetivos similares:http://code.google.com/p/autorar/.
Respuesta2
Este es un script que escribí para comprimir cada archivo por separado con el archivador rar (formato winrar5). Para comprimir todos los archivos *.pdf en una carpeta por separado, debe colocar este script en un archivo .bat y luego ejecutarlo. Primero especifica un directorio de inicio (raíz) donde se encuentran sus archivos, luego puede especificar extensiones para buscar y comprimir en ese directorio (búsqueda recursiva, ingresando subdirectorios del directorio raíz)
@echo off
REM -m5 max compression
REM -md64m dictionary size 64m
REM -s solid
REM -ma5 rar5 format (rar4 - ma4)
REM -y yes to all
REM -t test after packing (if test NOT ok, then files will not be deleted if the -df/-dr specified)
REM -df delete files after successful archivation
REM -ep1 exclude base folder of file from archive
:: %%~nZ - file name extracted from var Z
:: %%~fZ - full path of file+ext from var Z
:: %%~dpZ - disk+path
:: setlocal - use local environment vars
setlocal
:step1
echo Enter start path where files a located
set /p rarpath=
echo.
:: remove doublequotes from path
set rarpath=%rarpath:"=%
:check dir exist
if not exist "%rarpath%" echo "!!! [%rarpath%] doesn't exist, please enter correct path !!!"
if not exist "%rarpath%" echo.
if not exist "%rarpath%" goto step1
:::::
:::::
echo.
echo Enter which extensions to compress (like *.mp4;*.wmv)
set /p exten=
echo.
:::::
:::::
echo.
echo Final command:
echo for /R "%rarpath%" %%Z in (%exten%) do "%programfiles%\WinRAR\rar.exe" a -ma5 -m5 -s -md64m -t -y -ep1 -df "%%~nZ.rar" "%%~fZ"
echo.
:::::
:::::
echo.
echo Continue? [y/n]
set /p go=
if /i %go%==Y goto ok
if /i %go%==N goto exit
:ok
:: CD to each file's directory, compress file, log output (codepage 866)
set rartime=%time:~0,8%
set rartime=%rartime::=_%
set rartime=%rartime: =%
set rarlog=rar_log_%date%_%rartime%.txt
:: For directories located in current directory
:: for /d %D in (*) do "%programfiles%\winrar\rar.exe" a -ma5 -m5 -s -md64m -t -y -ep1 -df "%D.rar" "%D"
for /R "%rarpath%" %%Z in (%exten%) do (
cd /d %%~dpZ
"%programfiles%\WinRAR\rar.exe" a -ma5 -m5 -s -md64m -t -y -ep1 -df "%%~nZ.rar" "%%~fZ" >> c:\%rarlog% 2>&1
type c:\%rarlog%
echo. >> c:\%rarlog%
echo ----------------------------------------------------------------------------- >> c:\%rarlog%
echo. >> c:\%rarlog%
)
echo.
echo.
echo !!! All Done !!!
pause
goto :EOF
::EXIT /B 0
:exit
echo Program terminated
pause
goto :EOF