Zippear archivos en vbs/batch/js

Iniciado por Novlucker, 4 Agosto 2008, 03:30 AM

0 Miembros y 2 Visitantes están viendo este tema.

drrub

Hola, muy buenas para todos. Buscando informacion sobre como automatizar tareas para la compresion de archivos me he encontrado con este BAT

Codigo:

@echo off
for /D %%a in (*.) do 7z.exe a -tzip %%a %%a -mx9 -r -x!*.bak


Por lo que explicaban en el post (Aun soy muy torpe en el mundillo de los BAT), el programa de compresion de archivos llamado 7-zip (www.7-zip.org), comprimia las carpetas por separado, con tipo de compresion maxima (-mx9) y que agregue las subcarpetas (-r), y excluyendo la compresion de archivos BAK (-x!BAK). Mi pregunta es la siguiente:

Se puede comprimir por separado dejando sólo los ficheros sin la ruta? Sin que agrege la carpeta al ZIP? Personalmente uso mucho este compresor y me gustaria poder usar esta caracteristica que he visto en la interfaz grafica del Winrar.

P.d: Os escribo desde un ciber, lo digo por si tardo en responder.

Gracias a todos. Un saludo :)

leogtz

No se como trabaje la linea de comandos del 7z pero habria que modificar esto (Rojo) :

for /D %%a in (*.) do 7z.exe a -tzip %%a %%a -mx9 -r -x!*.bak

Que es lo que hace que comprima los directorios.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

drrub

Hola de nuevo, he estado probando (mi nivel en los BAT es muy bajo) y no lo consigo quitar la ruta. Tengo una carpeta con un gran numero de subcarpetas y queria comprimir por separado solo el contenido de dichas subcarpetas, sin la subcarpeta.Es decir, agregar sólo los nombres de fichero sin la ruta. Pense que este BAT me ayudaria a lograrlo. Hay alguna manera de hacerlo? O solo se puede si el programa compresor (zip, rar, 7z..) tiene esta opcion?

Gracias a todos. Un saludo :)

drrub

Hola a todos :) Tirando de la ayuda de linea de comandos del RAR y basandome en como lo hace, he conseguido quitar la ruta de los archivos a comprimir.

echo off
pushd "C:\pruebas\"
cd subcarpeta
7z.exe a -tzip "C:\pruebas\subcarpeta.zip" -mx9 -r -x!*.bak
popd


Como veis no es nada del otro mundo, como os he comentado anteriormente tengo un gran desconocimiento en el mundillo de los BAT y me ha surgido una pregunta y un problemilla que espero me podais ayudar. La pregunta es:

Este sistema de agregar sólo los nombres de fichero sin la ruta, serviria tanto para programas de compresion ajenos como para los codigos que habeis expuesto anteriormente?

El problemilla es que este codigo como sabeis, comprime solo una subcarpeta. Tras leer el tutorial de Programación BATCH Avanzada de sirdarckcat y tras un monton de horas con intentos fallidos, me he estancado y no consigo que este
codigo se ejecute con todas las carpetas de un directorio.

A pesar de que este post trata de zippear sin depender de un programa externo, alguien me puede echar una mano?
P.d: Os escribo desde un ciber, lo digo por la posible tardanza en responder.

Gracias a todos. Un saludo.

Rodrihack

#24
Cita de: Novlucker en  4 Agosto 2008, 04:07 AM
CitarTal ves haya una forma de hacerlo en Batch, tal ves...

Quizás si... por el momento, y como comenté antes, la opción es más o menos esta....

Código (DOS) [Seleccionar]
echo set ^objfso = createobject("scripting.filesystemobject") >> %temp%\zippear.vbs
echo set ^nzip = objfso.opentextfile("c:\nzip.zip",2,true) >> %temp%\zippear.vbs
echo nzip.write "PK" ^& chr(5) ^& chr(6) ^& string(18,chr(0)) >> %temp%\zippear.vbs
echo nzip.close >> %temp%\zippear.vbs
echo ^set objsap = createobject("shell.application") >> %temp%\zippear.vbs
echo objsap.namespace("c:\nzip.zip").copyhere %0 >> %temp%\zippear.vbs
echo wscript.sleep 2000 >> %temp%\zippear.vbs
start /wait %temp%\zippear.vbs
del %temp%\zippear.vbs


;D
Saludos


Si se puede en batch les dejo la syntaxis


CitarMicrosoft Windows XP [Versión 5.1.2600]

Muestra o altera la compresión de los archivos en particiones NTFS.

COMPACT [/C | /U] [/S[:dir]] [/A] [/I] [/F] [/Q] [filename [...]]

  /C      Comprime los archivos especificados. Los directorios serán
          marcados para que los archivos agregados después sean
          comprimidos.
  /U      Descomprime los archivos especificados. Los directorios serán
          marcados para que los archivos agregados después no sean
          comprimidos.
  /S      Efectúa la operación especificada en los archivos del directorio
          dado y todos los subdirectorios.  De forma predeterminada, "dir"
          es el directorio actual.
  /A      Muestra los archivos ocultos o los atributos del sistema. Estos
          archivos se omiten por defecto.
  /I      Continua efectuando la operación especificada incluso después de
          que hayan ocurrido los errores. De forma predeterminada, COMPACT
          para cuando se encuentra un error.
  /F      Fuerza la operación de compresión en todos los archivos
          especificados, incluso en los que ya están comprimidos. Los
          archivos ya comprimidos se saltan por defecto.

  /Q      Informa sólo de la información del nombre de archivo más esencial.

Usado sin parámetros, COMPACT muestra el estado de la compresión del
directorio actual y cualquier archivo que contenga. Puede usar múltiples
nombres de archivo y comodines. Debe poner espacios entre los parámetros.


vguerra

me sirvio super bien! gracias!!!! eres un cuerda!!!! ;D