¿Cómo empacar y comprimir múltiples archivos cargados llamando a la línea de comando Winzip en el lado del servidor?
Para resolver este problema, primero debemos comprender el host de secuencias de comandos de Windows, denominado WSH! Aquí hay una cita de la explicación de Microsoft:
************************************************************ ******* ****************************
* WSH es un tipo de serie de tecnología de scripts de Microsoft.
* En este entorno, algunos objetos están predefinidos y también se pueden usar otros objetos en COM. *
* Utiliza un motor de script para interpretar y ejecutar scripts.
* Los terceros también pueden desarrollar sus propios motores de secuencias de comandos. *
************************************************************ ******* ****************************
Para ser específico, primero compila algunos archivos de script (Microsoft viene con algunos ejemplos, con sufijos.vbs o .js).
Luego use un programa para explicarlo y ejecutarlo, y este programa se llama Windows Scripting Host.
El nombre es wscript.exe (o cscript.exe en la línea de comando), puede verificar su máquina
Si tiene estos dos archivos, sabrá si hay WSH. (Win2000 está en Winnt/System32/)
Esto es muy similar a un archivo por lotes, excepto que el archivo no es una línea de comando, sino un script escrito en el lenguaje de script.
Presentemos brevemente varios objetos incorporados que vienen con WSH, que incluyen:
1. Objeto proporcionado por wscript.exe
WScript está expuesto al motor de secuencias de comandos como WScript.
Wsharguments no público; ingresar
2. Objeto proporcionado por wshom.ocx.
Objeto automático Wshshell. Progid es wscript.wshshell.
(Nota: Esto es lo que queremos usar, puede ejecutar el comando DOS)
Objeto automático WSHNETWORK. Progid es wscript.wshnetwork.
WSHSHORTCUT no es público;
WSHURLSHORTCUT no es público;
WshCollection no se publica;
Whenvironment no es público;
WSHSpecialFolders no es público;
Pueden completar principalmente la adquisición de variables de entorno, inicio de sesión de red, mapeo de accionamiento y creación rápida de intercepción.
Carga del programa, carpetas especiales (como carpetas del sistema) adquisición de información y otras funciones.
Si su sistema admite ADO y otros componentes COM, también puede usarlo.
El siguiente ejemplo demuestra abrir un WordPad para ver un archivo de texto, crear un archivo de texto y escribir un
Puede copiarlo en el tablero de escritura, luego guardarlo con .vbs como sufijo y luego hacer doble clic.
'test.vbs
'************************
'Lo siguiente es iniciar el programa con el objeto Shell
'************************
Establecer wshshell = wscript.createObject (wscript.shell)
Wshshell.run (blocas
'********************************************************** *****
'Use el objeto com objeto script.filesystemObject para operar archivos de texto
'********************************************************** *****
Establecer fs = wscript.createObject (scripting.filesystemObject)
Establecer a = fs.createTextFile (c: /testfile.txt, verdadero)
A.WriteLine (esta es una prueba).
A. Close
También se puede aplicar en lenguajes de programación web como ASP
<Script Language = VBScript.Encode runat = Server>
'El anterior inicia el programa con el objeto Shell
Establecer wshshell = server.createObject (wscript.shell)
Issuccess = wshshell.run (d: /winnt/system32/cmd.exe, 1, verdadero)
Si issuccess = 0 entonces
¡El comando Response.Write se ejecutó con éxito!
demás
¡El comando Response.Write no pudo ejecutar! Los permisos insuficientes o el programa no pueden ejecutarse en el estado de DOS
final si
</script>
Nota:
1. El servidor runat = debe tener
2.set wshshell = wscript.createObject (wscript.shell)
Para cambiar para establecer wshshell = server.createObject (wscript.shell),
3. El parámetro 1 representa SW_Shownormal, activa y muestra una ventana. Si la ventana se minimiza o maximiza, se restaurará a su tamaño y posición originales.
4.true representa un error que devuelve la ejecución, falso o se especifica que el script continúa ejecutándose sin esperar a que finalice el proceso.
5. Llamando al objeto incorporado de WSH, se puede llamar como funciones y procedimientos de llamadas.
Por ejemplo, llame a wshshell.run (d: /winnt/system32/cmd.exe, 1, verdadero)
Si está interesado en WSH y desea saber más, consulte
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wsconwshbasics.asp
http://www.dev-club.com/club/bbs/showessence.asp?id=11136
¡Ahora volvamos al grano y veamos cómo comprimir y descomprimir archivos!
Todos saben que Winzip es fácil de descomprimir y comprimir archivos, pero ¿cómo llamarlos a través de programas y líneas de comando?
Por supuesto, el autor de Winzip se ha desarrollado
Winzip Command Line Support Add-on Versión 1.0
¡Todos pueden ir a http://www.winzip.com/wzcline.htm para descargar wzcline.exe!
La premisa es que la máquina debe instalar WinZip8.0 o superior Soporte.
http://www.winzip.com/download.htm ¡Descarga!
Después de descargar, ¡simplemente instálelo!
El archivo de ayuda de la línea de comandos de Winzip y el programa wzzip.exe, wzunzip.exe se generará en el directorio de Winzip.
Puede comenzar a ejecutar llamadas:
Por ejemplo: C:/Program Files/Winzip/Wzzip myFile.zip
También puede copiar dos archivos aquí a cualquier directorio y ejecutarlos directamente debajo de la ventana DOS.
Por ejemplo: wzzip.exe myfile.zip
Puede agregar set rath = c:/windows; c:/programa archivos/winzip;
¡Puedes llamarlo a cualquier parte sin agregar un pase!
Ahora comprendamos brevemente el uso básico de los dos comandos en la ayuda
Use wzzip.exe para comprimir archivos:
Formato general: wzzip [opciones] zipfile [@listfile] [archivos ...]
[Opciones] Incluya:
-Un operación predeterminada, archivo comprimido
-A+ comprimir el archivo y eliminar el archivo a comprimirse
-B [unidad | ruta] es crear archivos comprimidos temporales en otra unidad
-d eliminar el archivo de destino especificado en el archivo zip
-e <x | n | f | s | 0> es establecer la relación de compresión, x es el máximo y 0 es el mínimo
-f reemplaza el archivo que existe en el archivo zip
-h |-?
-V Crear una lista de archivos comprimidos
-@List Cree un archivo que contenga todos los archivos para descomprimirse, y luego comprimirlo por el nombre del archivo incluido
............. (Para otros detalles, consulte el archivo de ayuda)
[@ListFile] es un registro de información de lista de archivos comprimidos
[Archivos ...] son los múltiples archivos que se comprimirán, separados por espacios o un comodín
ejemplo:
Comprimir todos los archivos en el directorio actual
wzzip test.zip *. *
Comprimir todos los archivos de tipo txt
wzzip test.zip *.txt
Comprimir dos archivos
wzzip test.zip abc.txt def.txt
Comprimir todos los archivos de tipo txt excepto abc.txt
wzzip -xabc.txt test.zip *.txt
Comprima todos los archivos y subdirectorios de tipo txt en D:/Docs
wzzip -rp test.zip d:/docs/*. txt
Actualice el archivo en zipit.1st a test.zip
wzzip -u test.zip @zipit.lst
Enumere la lista de archivos comprimidos
wzzip -v test.zip
Use wzunzip.exe para descifrar el archivo:
Por formato: wzunzip [opciones] zipfile [@listfile] [ruta] [archivos ...]
[Opciones] Incluya:
-C [m] La descompresión es para mostrar la lista de archivos en la pantalla DOS
-d reconstruya la estructura del directorio en el archivo zip
-f solo descomprime los archivos con el mismo nombre que la carpeta actual en el archivo zip.
-jhrs ignora las propiedades ocultas, de solo lectura y del sistema de los archivos en archivos zip
-Jhrs solo descomprime archivos con propiedades ocultas, de solo lectura y del sistema
-No solo descomprime el nuevo archivo, reemplace si el archivo que se descomprime es más nuevo que el existente.
-O no es necesario usar SÍ para determinar si reemplazar el archivo
-V Crear una lista de archivos comprimidos
-@List Cree un archivo que contenga todos los archivos para descomprimirse, y luego descomprimirlo por el nombre del archivo incluido
............. (Para otros detalles, consulte el archivo de ayuda)
Por ejemplo:
Cree todos los archivos en el directorio actual
prueba wzunzip.zip
Crear abc.txt desde test.zip al directorio actual
wzunzip test.zip abc.txt
Cree la estructura y el archivo del directorio en test.zip al directorio actual
wzunzip -d test.zip
Cree la estructura y el archivo del directorio en test.zip a c:/docs
wzunzip -d test.zip c:/Docs Cree un archivo que contenga el nombre del archivo en files.ist desde test.zip
wzunzip test.zip @files.lst
Mostrar el contenido de la lista de archivos de test.zip
wzunzip -v test.zip
Muestra el contenido de todos los tipos de archivos TXT en el archivo comprimido
wzunzip -v test.zip *.txt
Con la preparación anterior, será fácil para nosotros escribir VBS para realizar la descompresión y la compresión de archivos:
'test.vbs
'************************
'El anterior inicia el programa con el objeto Shell
'************************
Establecer wshshell = wscript.createObject (wscript.shell)
Wshshell.run (c: /wzzip.exe c: /test.zip c: /a.txt c: /b.txt)
'Test.asp
'************************
'El anterior inicia el programa con el objeto Shell
'************************
<Script Language = VBScript.Encode runat = Server>
'El anterior inicia el programa con el objeto Shell
Establecer wshshell = server.createObject (wscript.shell)
Issuccess = wshshell.run (c: /wzzip.exe c: /test.zip c: /a.txt c: /b.txt, 1, verdadero)
Si issuccess = 0 entonces
¡El comando Response.Write se ejecutó con éxito!
demás
¡El comando Response.Write no pudo ejecutar! Los permisos insuficientes o el programa no pueden ejecutarse en el estado de DOS
final si
</script>
Es muy simple. como:
Después de cargar varios archivos con el componente de carga, puede empaquetar varios archivos para proporcionarlos a otros para descargar archivos zip
O después de cargar un archivo zip, puede usar el programa para descomprimirlo para proporcionarlo a otros para una descarga de un solo archivo
¡Muy conveniente para los usuarios! ¡Escribiré estos dos cambios en futuros artículos! Inevitablemente hay omisiones en el artículo, ¡corrígeme!
¡Todos los ejemplos anteriores se han probado en Win2000+IIS5.0!