Compresión de archivos usando un .bat

OliG Mensajes publicados 4 Estado Miembro -  
BlueskyFR Mensajes publicados 76 Estado Miembro -
Hola,

Estoy buscando un ejemplo de archivo batch que permita crear un .zip a partir de un .bat. Este debe ejecutarse automáticamente después de una compilación de C++ en Visual Studio 2005, por lo que no es posible comprimir manualmente los archivos. Debo incluir archivos que están en diferentes directorios en un solo .zip.

¿Dispone Windows de un comando "zip" por defecto? Tengo que enviar este proyecto por correo electrónico y debo asegurarme de que el .bat funcionará en la máquina del destinatario... Por lo tanto, no puedo utilizar un programa oscuro, por eficaz que sea. ¿Cuáles son mis soluciones?

Hasta ahora, he intentado con el comando "zip", pero tengo un error: 'zip' no se reconoce como un comando interno
o externo, un programa ejecutable o un archivo por lotes.

Cualquier ayuda será apreciada,
¡Gracias!
Configuración: Windows Vista Firefox

19 respuestas

dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 659
 
hola
uso el gratuito 7-zip: https://www.7-zip.org/
en la ayuda, hay todas las opciones para ejecutarlo desde la línea de comandos, por lo tanto en .bat:
Referencia rápida de comandos Descripción del comando a Agregar d Eliminar e Extraer l Listar t Probar u Actualizar x Extraer con rutas completas 
8
OliG Mensajes publicados 4 Estado Miembro 10
 
¡Wow! ¡Si me hubiera esperado eso!

Sé muy bien que Winzip es comercial... No uso Winzip, eso es todo...
De hecho, ¿de dónde viene ese comentario asesino sobre Winzip? ¿de la orden "zip"? Mencioné esto porque un amigo, queriendo ayudarme, me dio un breve ejemplo que incluía esta orden... El problema es que no consigo usarla en mi computadora (tal vez precisamente porque no tengo Winzip), el compilador me devuelve un error (como mencioné anteriormente): "zip" no es reconocido como un comando interno o externo, un programa ejecutable o un archivo por lotes. Mi pregunta sigue siendo: ¿hay un comando por defecto que permita comprimir archivos en cualquier computadora?

Sean indulgentes si hay cosas incongruentes en mi pregunta, la verdad es que nunca he hecho un archivo por lotes... He investigado en la red pero no he encontrado nada concluyente sobre los archivos por lotes de compresión (excepto para pkzip, pero no puedo usarlo). Es precisamente por eso que pido su ayuda en este asunto.

Si piensan dejar un ataque personal en mi contra, sin aportar algo constructivo a mi problema... por favor, salgan sin hacer ruido (como tú, Phil)

Si pueden ayudarme o simplemente dirigir mi atención a un enlace de internet que me haya pasado por alto, lo apreciaría mucho.
Gracias
7
dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 659
 
7z a -tzip archive.zip F:\Misdocs\*
5
OliG Mensajes publicados 4 Estado Miembro 10
 
No veo qué hay de tan atroz en mi pregunta, ¿alguien puede explicármelo?

Si no hay ningún programa de compresión instalado, Windows admite la descompresión de archivos... ¿Es tan tonto preguntar si existe un comando en la consola para esta operación?

Al final, incluí 7za.exe en mi carpeta (una versión "stand alone" de 7z)...
3
OliG Mensajes publicados 4 Estado Miembro 10
 
¡Gracias Dubcek!

He probado con 7-zip y funciona muy bien.
El único grano de arena en el engranaje es que si el destinatario de mi proyecto no tiene el programa 7-zip en su ordenador, no podrá compilar. Por eso quería saber si existe un comando de Windows por defecto para la compresión.

En verdad, al decir "programa oscuro", me refería a info-zip, un asistente de compresión gratuito que también funciona, pero que no parece ser muy conocido. Por el momento, simplemente indicaré o descargaré 7-zip.

Por mera curiosidad personal, y para la próxima vez, ¿alguien sabe si existe un comando de compresión propio de Windows?

¡Gracias de nuevo Dubcek!
0
dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 659
 
Si entiendo bien la pregunta, el objetivo es tener un programa de código abierto en C++ que cree o lea un archivo .zip.
0
phil_232 Mensajes publicados 286 Estado Miembro 33
 
WinZip todavía existe en versión de prueba, es decir, hay una versión gratuita.

https://www.winzip.com/win/en/
0
rodrigue62 Mensajes publicados 201 Estado Miembro 30
 
Hola,

Necesito tu ayuda, esperando no ser insultado porque mi pregunta sea "idiota".
Tengo 7Zip instalado en mi PC, pero cuando escribo 7z en el símbolo del sistema, me responde: " '7Z' no se reconoce como un comando interno o externo...".
¿Dónde está mi error? Vi este comando en el archivo de ayuda de 7 Zip, ¿no es así como se utiliza?

Gracias de antemano.
0
logon313 Mensajes publicados 50 Estado Miembro 9
 
¡Hola!
Me ha ocurrido un error de despiste que quizás te haya pasado:
el archivo externo se llama "7za.exe" y seguramente has escrito el comando "7z"
0
BlueskyFR Mensajes publicados 76 Estado Miembro 9 > logon313 Mensajes publicados 50 Estado Miembro
 
Esta respuesta es de hace 6 años... :D El problema seguramente se ha resuelto o ha pasado a otra cosa desde entonces ;)
0
dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 659
 
es necesario especificar la ruta completa, con comillas " debido a los espacios

C:>"C:\Program Files\7-Zip\7z"

7-Zip 4.42 Copyright (c) 1999-2006 Igor Pavlov 2006-05-14

Uso: 7z <comando> [<opciones>...] <nombre_del_archivo> [<nombres_de_archivos>...]
[<@listfiles...>]

<Comandos>
a: Agregar archivos al archivo
d: Eliminar archivos del archivo
...
...
0
rodrigue62 Mensajes publicados 201 Estado Miembro 30
 
Gracias por tu ayuda.
Voy avanzando, ahora obtengo el mensaje "comodín incorrecto en el archivo de lista" y no es muy claro para mí.
0
rodrigue62 Mensajes publicados 201 Estado Miembro 30
 
¿Nadie puede ayudarme con el mensaje de error que estoy recibiendo?

Gracias de antemano.
0
dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 659
 
afiche la orden utilizada
0
rodrigue62 Mensajes publicados 201 Estado Miembro 30
 
<img src="http://img1.imagilive.com/0109/7zerror.gif">
0
dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 659
 
los " son innecesarios si no hay espacio en los nombres
el error está en el archivo F:\Misdocumentos

Archivo de lista
Puedes proporcionar uno o más nombres de archivo o comodines para archivos de lista especiales (archivos que contienen listas de archivos). Los nombres de archivo en dicho archivo de lista deben estar separados por el símbolo de nueva línea.

Para los archivos de lista, 7-Zip usa codificación UTF-8 por defecto. Puedes cambiar la codificación usando el interruptor -scs.

Se admiten múltiples archivos de lista.

Por ejemplo, si el contenido del archivo "listfile.txt" es el siguiente:

Mis programas\*.cpp
Src\*.cpp

entonces el comando

7z a -tzip archivo.zip @listfile.txt

agrega al archivo "archivo.zip" todos los archivos "*.cpp" de los directorios "Mis programas" y "Src".

0
rodrigue62 Mensajes publicados 201 Estado Miembro 30
 
Si quiero comprimir toda la carpeta F:\Mesdocs, ¿tengo que pasar por un listfile.txt en el que solo escribiría F:\Mesdocs?
0
dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 659
 
no, no es necesario para un expediente, un lista de archivos es para rutas variadas y complejas.
0
rodrigue62 Mensajes publicados 201 Estado Miembro 30
 
Entonces, ¿cuál es el problema cuando quiero comprimir F:\Mesdocs, el nombre de la ruta no es lo suficientemente detallado?
Gracias por tu ayuda.
0
rodrigue62 Mensajes publicados 201 Estado Miembro 30
 
impecable. muchas gracias.
0
arth Mensajes publicados 84 Fecha de registro   Estado Colaborador Última intervención   1 293
 
¿Esperabas que Windows también hiciera café o dejaste esa solución a tu cafetera?
--

El lobo, solitario y misterioso.
-9
phil_232 Mensajes publicados 286 Estado Miembro 33
 
¿Programas en C++ y no sabes que WinZip es un programa comercial desde hace tiempo????????
Dudo de tus capacidades
Si no, eso se hace con Shell.
-11