Como hago un .Bat para mover, borrar y comprimir archivos?
Necesito hacer un .Bat que se ejecute en el inicio de sesión, que comprima un archivo (Jzip) en una carpeta, le ponga contraseña, lo mueva a otra carpeta y borre el contenido de la carpeta de origen, no se si todo esto es posible. Mover y borrar lo tengo claro, pero comprimir con contraseña no.
2 Respuestas
Por si alguien con prisas, lo necesita... este .BAT hace lo siguiente:
Comprime (hay que tener instalado previamente 7Zip), mueve los ficheros comprimidos, y borra por último. En este caso sólo he definido los .txt de la carpeta de ficheros comprimidos, con una antigüedad superior a 6 días. Pero si quieres, añade otra línea de borrado, para que también se eliminen los ficheros antiguos de más de X días.
@echo off
Chcp 1252 > NUL
rem Necesario para usar variables en un bucle FOR
setlocal enabledelayedexpansion
rem Directorio de logs
set DIR_LOGS="d:\Temp\Temp2\logs"
rem Definición de los logs que vamos a rotar (debe ser válida dentro de un bucle FOR)
set DEF_LOG="%DIR_LOGS%\caca*.txt"
rem Vemos la fecha del sistema y reemplazamos / por _
set d=%date%
set da=%d:/=_%
set SUFIJO_TMP=log_%da%
echo SUFIJO_TMP: %SUFIJO_TMP%
for %%i in (%DEF_LOG%) do (
set LOG=%%i
set NOMBRE=%%~nxi
set RUTA=%%~dpi
echo !RUTA!!NOMBRE! -^> !RUTA!!NOMBRE!%SUFIJO_TMP%
echo %da%
echo %def_log%
"c:\Program Files\7-Zip\7z.exe" A "d:\temp\temp2\logs\COMPRESS\!NOMBRE!.7Z" d:\temp\temp2\logs\!NOMBRE!
)
rem **************************************************************************************************
rem Borrado de logs antiguos, según ruta y nombre file.
rem La opcion [/d -"numero"] indica que conserva los ficheros de
rem como minimo, los dias indicados. Todos los anteriores, seran eliminados con el del.
rem **************************************************************************************************
forfiles /p d:\temp\temp2\logs /m *.txt /d -6 /c "cmd /c del /q @path"
- Compartir respuesta
Como ya imagino que sabrás a un bat se puede incorporar todos los comandos que se ejecuten en modo "línea de comandos", es decir sin ventanas ni navegación por ellas. No conozco el Jzip aunque he leído que es una especie de versión actual del 7z, Solo tienes que descubrir la sintaxis del comando, en modo línea, que te permite indicar la contraseña además de pedirle que comprima. En el 7z la invocación para que comprima el archivo PRUEBA.TXT creando el archivo COMPRIM. 7Z, utilizando la clave PEPITO sería
7z a comprim.7z prueba.txt -pPEPITO
(En la contraseña las mayúsculas sí que se tienen en cuenta).
Para ver la sintaxis del comando JZIP supongo que solo tendrás que ir a la carpeta en la que esté instalado, mediante una ventana de CMD y teclear JZIP sin más. Te sacará el texto explicativo de la invocación del comando.
Espero que te sirva. Si las cosas no son como imagino podría descargarme el JZIP para hablar con más propiedad pero creo que no debería ser necesario. En todo caso cuéntame lo que te sale si no consigues que te funcione.
Al intentar descargar el JZip, tanto desde la página "oficial" www.jzip.com como desde softonic, mi antivirus (McAfee 8.8 actualizado a 14/10/14) lo califica de "programa potencialmente indeseable" por incluir el "SearchSuite". En estas condiciones no me lo voy a descargar. Espero que lo que comenté anteriormente del 7z te haya servido para algo.
Ya me dirás.
Hola, gracias por tu respuesta y perdona la demora, puse esta pregunta en varias ocasiones y nadie me contestaba.
Te comento, el jzip es el compresor que usamos en la coorporación donde estamos, bueno como comentaba copiar, mover y borrar lo hago sin problemas, lo que no se es poner la linea de comprimir y poner contraseña.
Como te decía más arriba, si la sintaxis de la línea de llamada al Jzip no es similar a la del 7z (cosa que podría ser) te sugiero que vayas a la carpeta en que esté instalado el Jzip, desde una ventana de CMD y teclees JZIP sin más.
Si no entiendes algo de lo que te digo dímelo. Por si sirve para avanzar la apertura de una ventana CMD en Windows7 se puede hacer yendo a Inicio/Todos los programas/Accesorios/Ejecutar y escribiendo CMD en la casilla correspondiente. Se abrirá una ventana negra. Si, como supongo, el Jzip está en la carpeta de Archivos de programa, una vez en la ventana de CMD deberías escribir:
cd "\Program Files\Jzip"
Jzip
Y con eso te saldría la sintaxis de invocación del comando. Me la pones por aquí y ya seguimos.
Hola de nuevo, gracias por responder. He seguido las instrucciones a través de la consola y efectivamente la ruta es C:\archivos de programas\jzip\jzip.exe con esta línea se abre el jzip a través de la consola.
Gracias y un saludo.
¿Y ya has visto si la sintaxis del comando es similar a la del 7z?
En resumen, ¿has resuelto ya tu problema?
Si es así, cierra la consulta y si no lo es dime que más necesitas.
Hola,
Bueno creo que es la que puse arriba, al poner jzip, me abre un cuadro diciéndome los formatos de los archivos en los que puede comprimir, me haré una idea con lo que has puesto por arriba, lo único que no sabría como poner la contraseña, si crees que no necesito más, cerrare la consulta.
Gracias y un saludo.
No quiero que cierres la consulta sin resolverte el problema. Lo que necesito saber es la sintaxis del Jzip, es decir, lo que saca en el cuadro que explica la sintaxis. Para concretar, si yo hago con el 7z lo análogo me saca lo siguiente:
C:\Archivos de programa\7-Zip>7z
7-Zip 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...]
[<@listfiles...>]
<Commands>
a: Add files to archive
b: Benchmark
d: Delete files from archive
e: Extract files from archive (without using directory names)
l: List contents of archive
t: Test integrity of archive
u: Update files to archive
x: eXtract files with full paths
<Switches>
-ai[r[-|0]]{@listfile|!wildcard}: Include archives
-ax[r[-|0]]{@listfile|!wildcard}: eXclude archives
-bd: Disable percentage indicator
-i[r[-|0]]{@listfile|!wildcard}: Include filenames
-m{Parameters}: set compression Method
-o{Directory}: set Output directory
-p{Password}: set Password
-r[-|0]: Recurse subdirectories
-scs{UTF-8 | WIN | DOS}: set charset for list files
-sfx[{name}]: Create SFX archive
-si[{name}]: read data from stdin
-slt: show technical information for l (List) command
-so: write data to stdout
-ssc[-]: set sensitive case mode
-ssw: compress shared files
-t{Type}: Set type of archive
-u[-][p#][q#][r#][x#][y#][z#][!newArchiveName]: Update options
-v{Size}[b|k|m|g]: Create volumes
-w[{path}]: assign Work directory. Empty path means a temporary directory
-x[r[-|0]]]{@listfile|!wildcard}: eXclude filenames
-y: assume Yes on all queries
De aquí se deduce que para comprimir usando el 7z en modo comando se debe usar el comando "a" para añadir archivos, a continuación, si se quiere utilizar una contraseña (password) se utilizará el switch "-p" seguido de la contraseña que se quiera utilizar, a continuación el archive_name (nombre del archivo) donde se guardará el archivo comprimido y por último el nombre (o nombres, si fuera más de uno). Si quieres comprimir con 7z un archivo de nombre PRUEBA.TXT que está en la carpeta C:\CARPETA, usando como clave "PaJAriTO123" y que el nombre del archivo comprimido sea COMPRIM. 7Z en esa misma carpeta tendrás que usar el comando:
"c:\Archivos de programa\7-zip\7z" a -pPaJAriTO c:\carpeta\comprim.7z c:\carpeta\prueba.txt
Si la sintaxis del Jzip es similar el comando sería:
"c:\Archivos de programa\Jzip\Jzip" a -pPaJAriTO c:\carpeta\comprim.jzip c:\carpeta\prueba.txt
Pero quiero que consigas el BAT que estás buscando. Si no sabes como copiar aquí la sintaxis del comando, dímelo y veremos si consigo explicarte eso. Si no entiendes cualquier otra cosa dímelo también. Puedes obtener un pantallazo y subirlo a alguna página para compartir ficheros.
En resumen, que no sé cual es tu grado de conocimiento de algunas de las cosas que supongo conocidas, pero en ningún caso quiero que cierres la consulta sin haber conseguido lo que quieres, porque, si te he entendido bien, se puede hacer un BAT para mover, borrar y comprimir archivos con contraseña y con Jzip.
Espero tus noticias. Ánimo.
Perdón, la clave que he usado en el comando real es "PaJAriTO" y no "PaJAriTO123" como decía en el texto.
Pese a lo que dije más arriba respecto a la consideración de Jzip por el antivirus de McAfee como "potencialmente peligroso" he decidido descargármelo e instalarlo. Esto me ha permitido comprobar que para obtener la sintaxis del comando Jzip no vale el procedimiento indicado. En lugar de ejecutar C:\archivos de programas\jzip\jzip.exe se debe ejecutar C:\archivos de programas\jzip\jzip.exe /?
La pantalla que saca es la mostrada en
Por tanto el switch de la contraseña es "-s" y no "-p" con lo que el comando a usar sería:
"C:\Program Files\jzip\jzip" a -pPaJAriTO c:\carpeta\comprim.zip c:\carpeta\prueba.txt
Sin embargo si ejecuto el comando anterior me da un error:
Lo que me lleva a pensar que, pese a lo que se indica, el Jzip no soporta el modo comando, lo que impediría usarlo desde un BAT.
En mi modesta opinión esto huele un poco a chapuza y debería desaconsejar usar el Jzip como herramienta de compresión. Si se quiere una herramienta gratuita y fiable para hacer lo mismo recomendaría el 7z.
Desgraciadamente tengo que concluir que, aparentemente, el Jzip no soporta el modo comando o modo "línea de comando" por lo que, contra lo que decía en el mensaje anterior, no sería posible usarlo en un bat.
Por mi parte creo que no puedo hacer nada más, de modo que puedes cerrar la consulta o mantenerla por si alguien con mejor criterio te ofrece una solución.
Tengo que matizar lo dicho.
He seguido investigando y he visto una página de Asistencia en la página, supongo que "oficial", de jzip (www.jzip.com). La página en cuestión es http://jzip.kayako.com/Troubleshooter/List y en ella se puede encontrar tanto alguna información complementaria (por ejemplo que la forma prevista para obtener la sintaxis y la lista de comandos es "jzip -h" y no "jzip /?" que fue la que yo usé, aunque el resultado es idéntico), como una lista expresa de "Valid command lines" que contradice, parcialmente, la lista obtenida con la opción "-h" citada antes. Según esta lista de comandos válidos el comando en línea para añadir archivos es "-a" en lugar de "a" y parece funcionar. Sin embargo para comprimir con clave se indica el comando "-spassword" y ese comando no funciona del todo bien porque abre una ventana para pedir el tipo de encriptado, lo que invalida el carácter de "en línea" del comando, ya que hace que no sea "autónomo". He planteado una consulta en esa página en este sentido. Si dan ellos una solución podremos ver si se puede seguir adelante.
Ya te contaré si me dicen algo.
Finalmente me ha contestado el grupo de soporte de Jzip. Pongo aquí el texto de mi consulta y la respuesta:
Consulta:
Although in this page FAQ is stated that JZip works in command line mode, on one hand the
achieved syntax by "JZip -h" differs from that indicated in the "Valid command lines" of the same page and on other hand "in line" compression with password does not work as shown, because it opens a window to request the key and the encryption mode, thus preventing operation as "command line". Is there a way to encrypt in command line mode, without emerging window?
Respuesta:
Dear jZip User,
Thank you for contacting jZip
Unfortunately, the option you have inquired about is not currently available.
We continue to expand and improve our service everyday - You can check for further updates and announcements anytime by visiting http://jZip.com.
If you have any further inquiries, please do not hesitate to contact us.
Como se puede ver Jzip no permite la compresión con clave mediante comandos "en línea".
La opción sería utilizar otro compresor: 7z (gratuito), Winzip, Winrar, Winace, etc.
- Compartir respuesta