Autor
|
Tema: Zippear archivos en vbs/batch/js (Leído 30,303 veces)
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
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 , 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 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.... set objfso = createobject("scripting.filesystemobject") 'creamos el objeto que se encarga de manejar archivos set nzip = objfso.opentextfile("c:\nzip.zip",2,true) 'creamos el archivo zip, en este caso nzip.zip en el directorio C: nzip.write "PK" & chr(5) & chr(6) & string(18,chr(0)) nzip.close 'escribimos el encabezado del archivo, que hace que se reconozcan como zip set objsap = createobject("shell.application") 'creamos un nuevo objeto objsap.namespace("c:\nzip.zip").copyhere wscript.scriptfullname 'dentro de nuestro zip, copiamos el archivo, en este caso, el propio script wscript.sleep 2000 'agregamos una pequeña espera para que de tiempo a copiarse el archivo en el zip
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
|
|
« Última modificación: 12 Agosto 2008, 01:52 am por Novlucker »
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Claro que sirve , gracias por el aporte. Tal ves haya una forma de hacerlo en Batch, tal ves... Saludos.
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
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.... 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
Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
wizard_0
Desconectado
Mensajes: 11
THe magic
|
Muy weno excelente!!! salu2-->
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Novlucker Si te sirve de algo, asi se puede abrir un Zip en el navegador : Rundll32.exe zipfldr.dll, RoutheTheCall prueba.zip Saludos.
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Novlucker Si te sirve de algo, asi se puede abrir un Zip en el navegador : 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!!! Saludos
|
|
« Última modificación: 5 Agosto 2008, 14:12 pm por Novlucker »
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
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. Saludos.
|
|
|
En línea
|
|
|
|
BenRu
The Prodigy
Desconectado
Mensajes: 4.006
|
En batch si no recuerdo mal, se puede.
Simplemente le pasas un comando al winrar...
Miren el readme de winrar.
Un saludo
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
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
|
|
« Última modificación: 4 Agosto 2008, 18:54 pm por Novlucker »
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
SmartGenius
Desconectado
Mensajes: 181
:P
|
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.... @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... Espero sirva.. Saludos.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Archivos batch que entren a paginas web.
Scripting
|
martiin29
|
8
|
6,698
|
23 Enero 2011, 12:31 pm
por SuperDraco
|
|
|
Archivos Batch.
Scripting
|
B€T€B€
|
0
|
2,123
|
31 Mayo 2011, 00:41 am
por B€T€B€
|
|
|
[Batch] Ice Crack 1.3 (Stealer y craqueador de archivos)
« 1 2 3 4 »
Scripting
|
Eleкtro
|
34
|
30,208
|
19 Mayo 2013, 01:50 am
por Zebas
|
|
|
Archivos .bat (batch) que se remplacen mutuamente
Scripting
|
Caparroni
|
0
|
1,728
|
13 Febrero 2016, 12:46 pm
por Caparroni
|
|
|
[Batch] Cuenta de Archivos
Scripting
|
osmel92
|
1
|
1,997
|
14 Marzo 2016, 06:39 am
por osmel92
|
|