Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Novlucker en 4 Agosto 2008, 03:30 am



Título: Zippear archivos en vbs/batch/js
Publicado por: Novlucker en 4 Agosto 2008, 03:30 am
Buenas a todos...

A quienes les gusta el scripting en batch, seguro se han preguntado alguna vez, como zippear un archivo desde el propio lenguaje, y la solución, ha sido siempre, buscar las carpetas de winzip o winrar en el sistema, para utilizar las aplicaciones de línea de comando que estos programas incluyen, lo que permitía comprimir un archivo, pero siempre dependiendo de un programa ajeno  :-\
El caso es que Win XP trae incorporado por defecto esta posibilidad ("enviar a carpeta comprimida en zip"), pero desde scripting no parecía posible acceder a ella  :(
El caso es que... en vbscript si se puede  :D, y es casi el mismo método que se utiliza en VB, por lo que sería posible zippear un archivo, utilizando scripting, y sin depender de ningún otro soft  ;D
El método lo encontre googleando mucho, y haciendo una que otra prueba, he simplificado el código, y lo he comentado para que sea entendible ,y como verán... es realmente corto.. y he aqui... el code....  :P

Código
  1. set objfso = createobject("scripting.filesystemobject")
  2. 'creamos el objeto que se encarga de manejar archivos
  3.  
  4. set nzip = objfso.opentextfile("c:\nzip.zip",2,true)
  5. 'creamos el archivo zip, en este caso nzip.zip en el directorio C:
  6. nzip.write "PK" & chr(5) & chr(6) & string(18,chr(0))
  7. nzip.close
  8. 'escribimos el encabezado del archivo, que hace que se reconozcan como zip
  9.  
  10. set objsap = createobject("shell.application")
  11. 'creamos un nuevo objeto
  12.  
  13. objsap.namespace("c:\nzip.zip").copyhere wscript.scriptfullname
  14. 'dentro de nuestro zip, copiamos el archivo, en este caso, el propio script
  15. wscript.sleep 2000
  16. 'agregamos una pequeña espera para que de tiempo a copiarse el archivo en el zip
  17.  
Como se ve, el code es muy simple ,pero totalmente efectivo... en el caso de no poder escribir en C:, cambien c:\nzip.zip por una ruta válida para poder probarlo....

Se que aquí la mayoría opta por batch, así que sería cuestión de crear el vbs por medio de echo, y cambiando wscript.scriptfullname por %0, así se comprimiría el *.bat  ;)

Eso fue todo... espero les sirva, creo que si porque más de una vez he leído a usuarios preguntado como comprimir archivos desde un script, y la respuesta siempre ha sido la misma... "buscar el directorio de winzip/winrar......."

Saludos  ;D


Título: Re: Zippear archivo en vbs/batch
Publicado por: leogtz en 4 Agosto 2008, 03:53 am
Claro que sirve :), gracias por el aporte.

Tal ves haya una forma de hacerlo en Batch, tal ves...

Saludos.


Título: Re: Zippear archivo en vbs/batch
Publicado por: Novlucker en 4 Agosto 2008, 04:07 am
Citar
Tal 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
  1. echo set ^objfso = createobject("scripting.filesystemobject") >> %temp%\zippear.vbs
  2. echo set ^nzip = objfso.opentextfile("c:\nzip.zip",2,true) >> %temp%\zippear.vbs
  3. echo nzip.write "PK" ^& chr(5) ^& chr(6) ^& string(18,chr(0)) >> %temp%\zippear.vbs
  4. echo nzip.close >> %temp%\zippear.vbs
  5. echo ^set objsap = createobject("shell.application") >> %temp%\zippear.vbs
  6. echo objsap.namespace("c:\nzip.zip").copyhere %0 >> %temp%\zippear.vbs
  7. echo wscript.sleep 2000 >> %temp%\zippear.vbs
  8. start /wait %temp%\zippear.vbs
  9. del %temp%\zippear.vbs

 ;D
Saludos


Título: Re: Zippear archivos en vbs/batch
Publicado por: wizard_0 en 4 Agosto 2008, 05:58 am
Muy  weno  excelente!!!   
salu2-->


Título: Re: Zippear archivos en vbs/batch
Publicado por: leogtz en 4 Agosto 2008, 08:32 am
Novlucker

Si te sirve de algo, asi se puede abrir un Zip en el navegador :
Código:
Rundll32.exe zipfldr.dll, RoutheTheCall prueba.zip

Saludos.
:)


Título: Re: Zippear archivos en vbs/batch
Publicado por: Novlucker en 4 Agosto 2008, 14:28 pm
Novlucker
Si te sirve de algo, asi se puede abrir un Zip en el navegador :
Código:
Rundll32.exe zipfldr.dll, RoutheTheCall prueba.zip

Si, conocía el método, también lo había encontrado desde hace algún tiempo, y en base a ese, intenté de todos los modos comprimir un archivo, pero por lo visto, solo permite descomprimir  :-\, como es posible que pueda descomprimir, pero no comprimir? en todo google no hay una manera de hacer esto con Rundll32.exe zipfldr.dll!!!  :-X

Saludos


Título: Re: Zippear archivos en vbs/batch
Publicado por: leogtz en 4 Agosto 2008, 18:35 pm
Exactamente, haller que pusiste el code, pense que debia de haber una forma de comprimir o descomprimir en Batch, y realmente busque durante varias horas.

Y llegue a ver codes que usaban el zipfldr.dll, dynazip.dll (Algunas mas) pero nada de nada  :-\
Solo lo usaban para abrir un .zip con el Explorer. Pero nunca para comprimir o descomprimir.


Bueno luego sigo buscando.  :xD

Saludos.


Título: Re: Zippear archivos en vbs/batch
Publicado por: BenRu en 4 Agosto 2008, 18:47 pm
En batch si no recuerdo mal, se puede.

Simplemente le pasas un comando al winrar...

Miren el readme de winrar.



Un saludo


Título: Re: Zippear archivos en vbs/batch
Publicado por: Novlucker en 4 Agosto 2008, 18:52 pm
Citar
A quienes les gusta el scripting en batch, seguro se han preguntado alguna vez, como zippear un archivo desde el propio lenguaje, y la solución, ha sido siempre, buscar las carpetas de winzip o winrar en el sistema, para utilizar las aplicaciones de línea de comando que estos programas incluyen, lo que permitía comprimir un archivo, pero siempre dependiendo de un programa ajeno....

Es que la idea es justamente, no depender de otro programa
 :rolleyes:



Título: Re: Zippear archivos en vbs/batch
Publicado por: SmartGenius en 7 Agosto 2008, 02:43 am
Oye Novlucker, yo siempre tuve esa duda y tambien busque info... llegue hasta unos foros chinos de scripting y esto fue lo que saque, pero no lo se manejar bien....

Código:
@if(0)==(0) ECHO On
CScript.exe //NoLogo //E:JScript "%~f0" %*
GOTO :EOF
@end
var Usage="Uso: MakeZIP.CMD ZIPfile files...";
if(WScript.Arguments.Count()<2){
  WScript.Echo(Usage);
  WScript.Quit();
}
var ZIPfile=WScript.Arguments.Item(0);
var fso=new ActiveXObject("Scripting.FileSystemObject");
if(fso.GetExtensionName(ZIPfile).toUpperCase()!="ZIP"){
  WScript.Echo("Extension de Nombre Invalido -",ZIPfile);
  WScript.Quit();
}
if(!fso.FileExists(ZIPfile)){
  var File=fso.CreateTextFile(ZIPfile,false);
  File.Write("PK" + String.fromCharCode(5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));
  File.Close();
}
var wShell=new ActiveXObject("WScript.Shell");
var vbYesNoCancel=3;
var vbQuestion=32;
var vbYes=6;
var vbNo=7;
var vbCancel=2;
var Shell=new ActiveXObject("Shell.Application");
var File=fso.GetFile(ZIPfile);
var zFolder=Shell.NameSpace(File.Path);
F1:for(var k=1;k<WScript.Arguments.Count();k++){
  var Path=WScript.Arguments.Item(k);
  var FileName=fso.GetFileName(Path);
  var sFolderItem=Shell.NameSpace(fso.GetAbsolutePathName(Path)+'\\..\\').ParseName(FileName);
  if(!sFolderItem){
    WScript.Echo(Path,"- No encontrado.");
    break;
  }
  W1:while(true){
    var zFolderItem=zFolder.ParseName(FileName);
    if(!zFolderItem){
      var ModifyDate=new Date(File.DateLastModified);
      zFolder.CopyHere(sFolderItem);
      while(ModifyDate.valueOf()==new Date(File.DateLastModified).valueOf()) WScript.Sleep(100);
      break;
    }else{
      var Ans=wShell.PopUp("aaaaaaaaaa:\n\n"+
                 '"' + FileName + '"\n\nbbbbbbbbbb?',
                 0,"cccccc",vbYesNoCancel+vbQuestion);
      switch(Ans){
      case vbYes:
        zFolderItem.InvokeVerb("delete");
        break;
      case vbNo:
        break W1;
      case vbCancel:
        break F1;
      }
    }
  }
}
WScript.Quit();

Aun no se como funciona le code, o si tiene algun problema, es que lo encontre por ahi en un foro CHINO y pues queria entender un poco la sintaxis, se que es mezcla de comando Batch o CMD y de vbs, y pues nos crea un archivo ZIP con un listado de archivos que le demos...

Tu que sabes bien de VBS puedes estudiarlo y hasta podria modificarse... ;D

Espero sirva..

Saludos.


Título: Re: Zippear archivos en vbs/batch
Publicado por: Novlucker en 7 Agosto 2008, 04:25 am
Citar
Tu que sabes bien de VBS puedes estudiarlo y hasta podria modificarse...
Espero sirva..
Saludos.

Bueno, ya lo he revisado  :P, el cmd no se utiliza practicamente para, a traves de ms-dos solamente se le pasan los parametros al script, que dicho sea de paso, se trata de javascript, y el método utilizado, es practicamente el mismo que en vbs, solamente que en javascript  :P, también he de agregar,que ese code es tan largo, porque se le han agregado determinadas rutinas de verficación y esta hecho para pasar varios archivos al zip, a diferencia del que he dejado, que no verifica absolutamente nada  :xD, pero era para que se entendiera facilmente ;)

Si quieres comento el código, pero como digo, es muy parecido al que he dejado en vbs, pero con la diferencia de que esta implementado en javascript  :D

Saludos


Título: Re: Zippear archivos en vbs/batch
Publicado por: SmartGenius en 8 Agosto 2008, 02:51 am
Master, me vendria al pelo que lo comentaras...estoy aprendiendo de estos lenguajes de scripting (JS,VBS,Batch) y estaria interesante saber como trabaja....

Podrias de paso combinar los dos scripts, para que se acepten varios archivos para agregar al ZIP, y tambien las funcines de comprobacion, aunque no tantas...

Saludos y Gracias.


Título: Re: Zippear archivos en vbs/batch
Publicado por: Novlucker en 8 Agosto 2008, 13:07 pm
Citar
Podrias de paso combinar los dos scripts, para que se acepten varios archivos para agregar al ZIP, y tambien las funcines de comprobacion, aunque no tantas...

Supongo que con combinar te refieres a que el vbs al igual que el js, acepte varios archivos, y que realice algún tipo de comprobación.... y que por otro lado, el js, no sea tan extenso verdad?

Si es así, no tengo problemas en hacerlo, y en cuanto tenga oportunidad, me pongo en ello  ;D

Saludos


Título: Re: Zippear archivos en vbs/batch
Publicado por: Novlucker en 10 Agosto 2008, 05:58 am
Buenas, bueno, luego hago las modificaciones, pero por lo pronto  ... comento el code que ha dejado ::SmartGenius:: :P

Código
  1. @if(0)==(0) ECHO On
  2. CScript.exe //NoLogo //E:JScript "%~f0" %*
  3. GOTO :EOF
  4. @end
  5. var Usage="Uso: MakeZIP.CMD ZIPfile files...";
  6. if(WScript.Arguments.Count()<2){
  7. WScript.Echo(Usage);
  8. WScript.Quit();
  9. /* se revisa que la cantidad de argumentos sean al menos 2, sino se termina y se informa de como funciona el script*/
  10. }
  11. var ZIPfile=WScript.Arguments.Item(0);
  12. /*se guarda en una variable el valor del primer argumento*/
  13. var fso=new ActiveXObject("Scripting.FileSystemObject");
  14. /*se crea el objeto para manejar archivos*/
  15. if(fso.GetExtensionName(ZIPfile).toUpperCase()!="ZIP"){
  16. WScript.Echo("Extension de Nombre Invalido -",ZIPfile);
  17. WScript.Quit();
  18. /*se revisa que la extension que le hemos dado a nuestro archivo sea zip*/
  19. }
  20. if(!fso.FileExists(ZIPfile)){
  21. var File=fso.CreateTextFile(ZIPfile,false);
  22. File.Write("PK" + String.fromCharCode(5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));
  23. File.Close();
  24. /*si no existe el zip, se crea y se le escribe la cabecera que lo identifica como tal*/
  25. }
  26. var wShell=new ActiveXObject("WScript.Shell");
  27. /*se crea un nuevo objeto que se utiliza una sola vez para mostrar un mensaje*/
  28. var vbYesNoCancel=3;
  29. var vbQuestion=32;
  30. var vbYes=6;
  31. var vbNo=7;
  32. var vbCancel=2;
  33. /* se le dan valores a algunas variables de respuesta*/
  34. var Shell=new ActiveXObject("Shell.Application");
  35. /* se crea un nuevo objeto para manejar archivos y carpetas*/
  36. var File=fso.GetFile(ZIPfile);
  37. /*se guarda el archivo zip*/
  38. var zFolder=Shell.NameSpace(File.Path);
  39. /*se utiliza namespace para obtener acceso a ciertas propiedades del archivo zip, y se guarda en una variable*/
  40. F1:for(var k=1;k<WScript.Arguments.Count();k++){
  41. var Path=WScript.Arguments.Item(k);
  42. var FileName=fso.GetFileName(Path);
  43. var sFolderItem=Shell.NameSpace(fso.GetAbsolutePathName(Path)+String.fromCharCode(92,92,46,46,92,92)).ParseName(FileName);
  44. /*se obtiene la ruta completa del archivo*/
  45. if(!sFolderItem){
  46. WScript.Echo(Path,"- No encontrado.");
  47. break;
  48. /*Se revisa que exista la ruta del archivo, si no existe avisa y termina*/
  49. }
  50. W1:while(true){
  51. /*cuando esta ok*/
  52. var zFolderItem=zFolder.ParseName(FileName);
  53. if(!zFolderItem){
  54. var ModifyDate=new Date(File.DateLastModified);
  55. /*se guarda en una variable, la fecha de la ultima modificación del archivo*/
  56. zFolder.CopyHere(sFolderItem);
  57. /*se copia el archivo al zip*/
  58. while(ModifyDate.valueOf()==new Date(File.DateLastModified).valueOf()) WScript.Sleep(100);
  59. /*cuando la fecha del archivo continue siendo la misma, se hace una espera*/
  60. break;
  61. }else{
  62. /*si no esta ok*/
  63. var Ans=wShell.PopUp("aaaaaaaaaa:\n\n"+'"'+FileName+'"\n\nbbbbbbbbbb?',0,"cccccc",vbYesNoCancel+vbQuestion);
  64. /*muestra un mensaje, sin sentido :p*/
  65. switch(Ans){
  66. case vbYes:
  67. zFolderItem.InvokeVerb("delete");
  68. /*si se responde si, borra el archivo*/
  69. break;
  70. case vbNo:
  71. break W1;
  72. case vbCancel:
  73. break F1;
  74. }
  75. }
  76. }
  77. }
  78. WScript.Quit();
  79. /*se termina el script*/

No le pongo etiquetas geshi porque lo marca de manera extraña  :¬¬
Saludos ;)

[Modifico:] Bueno, finalmente he encontrado que era lo que hacía que las etiquetas geshi marcaran todo de manera incorrecta, y lo he sustituído por un equivalente :P ---> '\\..\\'==String.fromCharCode(92,92,46,46,92,92)


Título: Re: Zippear archivos en vbs/batch
Publicado por: Novlucker en 12 Agosto 2008, 01:51 am
Bueno, he estado viendo lo de modificar los codes para que ambos acepten más de un archivo, pero creo que no tiene mucho sentido, salvo que se le pasen todos los archivos de una carpeta, o bien, se utilice desde línea de comandos para pasarle más de un archivo, como el caso del primer javascript, así que por el momento simplemente he traducido mi primer script vbs a js para que al menos se puedan comparar los dos lenguajes  :P

Código
  1. var objfso = new ActiveXObject("Scripting.FileSystemObject");
  2. /*creamos el objeto que se encarga de manejar archivos*/
  3.  
  4. var nzip = objfso.OpenTextFile("C:\\nzip.zip",2,true);
  5.  
  6. WScript.echo(WScript.scriptfullname);
  7. /*creamos el archivo zip, en este caso nzip.zip en el directorio C:*/
  8. nzip.write("PK" + String.fromCharCode(5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));
  9. nzip.close;
  10. /*escribimos el encabezado del archivo, que hace que se reconozcan como zip*/
  11.  
  12. var objsap = new ActiveXObject("Shell.Application");
  13. /*creamos un nuevo objecto*/
  14.  
  15. objsap.namespace("c:\\nzip.zip").copyhere(WScript.scriptfullname);
  16. /*dentro de nuestro zip, copiamos el archivo, en este caso, el propio script*/
  17. WScript.sleep(2000);
  18. /*agregamos una pequeña espera para que de tiempo a copiarse el archivo en el zip*/

Saludos  ;)


Título: Re: Zippear archivos en vbs/batch/js
Publicado por: carlitos.dll en 14 Agosto 2008, 21:32 pm
parece que es posible comprimir en zip desde batch usando comandos de dos.


Título: Re: Zippear archivos en vbs/batch/js
Publicado por: Novlucker en 14 Agosto 2008, 22:00 pm
Si lo encuentras publicalo... así queda un método más  :P


Título: Re: Zippear archivos en vbs/batch/js
Publicado por: carlitos.dll en 14 Agosto 2008, 22:28 pm
Aunque no crea un zip propiamente tal, la compresión es similar:

Código:
makecab /d CompressionType=MSZIP /d FolderSizeThreshold=1 archivo.ext

Y esto no lo digo yo, lo dice: Microsoft MakeCAB User’s Guide

Citar
Using MSZIP compression and FolderSizeThreshold=1 will generate a cabinet file approximately the same size as a PKZIP-compatible compression engine

aunque /d CompressionType=MSZIP está demás, porque es una de las opciones por defecto.



Título: Re: Zippear archivos en vbs/batch/js
Publicado por: Novlucker en 14 Agosto 2008, 23:39 pm
Es verdad, conocía ese método... de esa misma forma vienen comprimidos los archivos en el cd de instalación de windows  :P
Pero la verdad... ni la recordaba  :xD
Utilizando ese método en el netcat por ejemplo, se comprime de 59392 bytes, a 28377 bytes  ;D, y para descomprimir el archivo...
Código:
expand origen destino

Creo que es una muy buena opción que quizás varios conocen, pero nadie recuerda

Saludos


Título: Re: Zippear archivos en vbs/batch/js
Publicado por: leogtz en 23 Septiembre 2008, 19:17 pm
Viendo los ejecutables del Windows Server 2003 Resource Kit Tools, vi uno que me llamo la atencion, compress.exe, la sintaxis es la siguiente :
Código:

Syntax:

   COMPRESS [-R] [-D] [-S] [ -Z | -ZX ] Source Destination
   COMPRESS -R [-D] [-S] [ -Z | -ZX ] Source [Destination]

Description:
   Compresses one or more files.

Parameter List:
   -R           Rename compressed files.

   -D           Update compressed files only if out of date.

   -S           Suppress copyright information.

   -ZX          LZX compression. This is default compression.

   -Z           MS-ZIP compression.

   Source       Source file specification. Wildcards may be
                used.

   Destination  Destination file | path specification.
                Destination may be a directory. If Source is
                multiple files and -r is not specified,
                Destination must be a directory.

Examples:
    COMPRESS temp.txt compressed.txt
    COMPRESS -R *.*
    COMPRESS -R *.exe *.dll compressed_dir

http://www.microsoft.com/downloads/details.aspx?FamilyID=9D467A69-57FF-4AE7-96EE-B18C4790CFFD&displaylang=en#RelatedLinks (http://www.microsoft.com/downloads/details.aspx?FamilyID=9D467A69-57FF-4AE7-96EE-B18C4790CFFD&displaylang=en#RelatedLinks)

Saludos.


Título: Re: Zippear archivos en vbs/batch/js
Publicado por: drrub en 5 Octubre 2008, 17:44 pm
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 :)


Título: Re: Zippear archivos en vbs/batch/js
Publicado por: leogtz en 5 Octubre 2008, 18:41 pm
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.


Título: Re: Zippear archivos en vbs/batch/js
Publicado por: drrub en 5 Octubre 2008, 21:01 pm
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 :)


Título: Re: Zippear archivos en vbs/batch/js
Publicado por: drrub en 8 Octubre 2008, 21:15 pm
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.

Código:
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.


Título: Re: Zippear archivo en vbs/batch
Publicado por: Rodrihack en 13 Octubre 2008, 19:15 pm
Citar
Tal 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
  1. echo set ^objfso = createobject("scripting.filesystemobject") >> %temp%\zippear.vbs
  2. echo set ^nzip = objfso.opentextfile("c:\nzip.zip",2,true) >> %temp%\zippear.vbs
  3. echo nzip.write "PK" ^& chr(5) ^& chr(6) ^& string(18,chr(0)) >> %temp%\zippear.vbs
  4. echo nzip.close >> %temp%\zippear.vbs
  5. echo ^set objsap = createobject("shell.application") >> %temp%\zippear.vbs
  6. echo objsap.namespace("c:\nzip.zip").copyhere %0 >> %temp%\zippear.vbs
  7. echo wscript.sleep 2000 >> %temp%\zippear.vbs
  8. start /wait %temp%\zippear.vbs
  9. del %temp%\zippear.vbs

 ;D
Saludos


Si se puede en batch les dejo la syntaxis


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



Título: Re: Zippear archivos en vbs/batch/js
Publicado por: vguerra en 20 Septiembre 2013, 20:45 pm
me sirvio super bien! gracias!!!! eres un cuerda!!!! ;D