Como embalar e comprimir vários arquivos enviados chamando a linha de comando winzip no lado do servidor?
Para resolver esse problema, devemos primeiro entender o host de script do Windows, conhecido como WSH! Aqui está uma citação da explicação da Microsoft:
**************************************************** ******* *****************************
* O WSH é um tipo de série de tecnologia de script da Microsoft.
* Nesse ambiente, alguns objetos são predefinidos e outros objetos no COM também podem ser usados. *
* Ele usa um mecanismo de script para interpretar e executar scripts.
* Terceiros também podem desenvolver seus próprios motores de script. *
**************************************************** ******* *****************************
Para ser específico, você primeiro compila alguns arquivos de script (a Microsoft vem com alguns exemplos, com sufixos.vbs ou .js).
Em seguida, use um programa para explicar e executá -lo, e este programa é chamado de host de script do Windows.
O nome é wscript.exe (ou cscript.exe na linha de comando), você pode verificar sua máquina
Se você tiver esses dois arquivos, saberá se houver wsh. (Win2000 está em WinNT/System32/)
Isso é muito semelhante a um arquivo em lote, exceto que o arquivo não é uma linha de comando, mas um script escrito no idioma do script.
Vamos apresentar brevemente vários objetos internos que acompanham o WSH, incluindo:
1. Objeto fornecido por wscript.exe
O WScript é exposto ao mecanismo de script como WScript.
WSHARGUMENTOS NÃO POVAL; digitar
2. Objeto fornecido por wshom.ocx.
Objeto automático wshshell. Progid é wScript.wshell.
(Nota: é isso que queremos usar, você pode executar o comando DOS)
Objeto automático wshnetwork. Progid é wscript.wshnetwork.
O WSHSHORTCUT não é público;
Wshurlshortcut não é público;
WSHCollection não é publicado;
Wshenvironment não é público;
O WSHSpecialfolders não é público;
Eles podem concluir principalmente a aquisição de variáveis de ambiente, login de rede, mapeamento de acionamento e criação de interceptação rápida.
Carregamento do programa, pastas especiais (como pastas de sistema) Aquisição de informações e outras funções.
Se o seu sistema suportar ADO e outros componentes COM, você também poderá usá -lo.
O exemplo a seguir demonstra a abertura de um wordpad para visualizar um arquivo de texto, criando um arquivo de texto e escrevendo um
Você pode copiá-lo para a placa de redação e salvá-lo com .vbs como sufixo e clique duas vezes em clique duas vezes.
'test.vbs
'**************************
'O seguinte é iniciar o programa com o objeto Shell
'**************************
Set wshshell = wscript.createObject (wscript.shell)
Wshshell.run (notepad & wscript.scriptfullName)
'***************************************************** *****
'Use COM Object script.filesystemobject para operar arquivos de texto
'***************************************************** *****
Definir fs = wscript.createObject (scripting.filesystemobject)
Set a = fs.createTextFile (c: /testfile.txt, true)
A.WriteLine (este é um teste.)
A.Close
Também pode ser aplicado em linguagens de programação da web, como asp
<idioma do script = vbscript.encode runat = server>
'O exposto acima inicia o programa com o objeto Shell
Set wshshell = server.createObject (wscript.shell)
ISSUCCESS = wshshell.run (d: /winnt/system32/cmd.exe, 1, verdadeiro)
Se ISSUCCESS = 0 então
O comando Response.Write foi executado com sucesso!
outro
O comando Response.Write falhou em executar! Permissões insuficientes ou o programa não pode ser executado no estado do DOS
final se
</script>
Observação:
1. O runat = servidor deve ter
2.set wshshell = wscript.createObject (wscript.shell)
Para alterar para definir wshshell = server.createObject (wscript.shell),
3. O parâmetro 1 representa sw_shownormal, ativa e exibe uma janela. Se a janela for minimizada ou maximizada, ela será restaurada ao seu tamanho e posição originais.
4. True representa um erro que retorna a execução, falsa ou é especificado que o script continua a executar sem esperar que o processo termine.
5. Chamando o objeto interno do WSH, ele pode ser chamado como chamadas funções e procedimentos.
Por exemplo, ligue para wshshell.run (d: /winnt/system32/cmd.exe, 1, verdadeiro)
Se você estiver interessado em WSH e quer saber mais, verifique
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
Agora vamos voltar ao ponto e ver como comprimir e descomprimir arquivos!
Todo mundo sabe que o Winzip é fácil de descomprimir e compactar arquivos, mas como chamá -los através de programas e linhas de comando?
Claro que o autor de Winzip desenvolveu
Winzip Command Line Support Add-on versão 1.0
Todos podem ir para http://www.winzip.com/wzcline.htm para baixar wzcline.exe!
A premissa é que a máquina deve instalar o Winzip8.0 ou Suporte superior.
http://www.winzip.com/download.htm Download!
Após o download, basta instalá -lo!
A linha de comando winzip arquivo Ajuda e programa wzzip.exe, wzunzip.exe será gerada no diretório Winzip.
Você pode começar a executar chamadas:
Por exemplo: c:/arquivos de programas/winzip/wzzip myfile.zip
Você também pode copiar dois arquivos aqui para qualquer diretório e executá -los diretamente sob a janela DOS.
Por exemplo: wzzip.exe myfile.zip
Você pode adicionar o caminho definido = c:/windows; c:/arquivos de programas/winzip;
Você pode ligar para qualquer lugar sem adicionar um passe!
Agora vamos entender brevemente o uso básico dos dois comandos na ajuda
Use wzzip.exe para compactar arquivos:
Formato geral: wzzip [options] zipfile [@listfile] [arquivos ...]
[Opções] Inclua:
-Uma operação padrão, arquivo compactado
-a+ compacte o arquivo e exclua o arquivo a ser compactado
-B [Drive | Path] é criar arquivos compactados temporários em outra unidade
-D Exclua o arquivo de destino especificado no arquivo zip
-e <x | n | f | s | 0> deve definir a taxa de compressão, x é o máximo e 0 é o mínimo
-f substitua o arquivo que existe no arquivo zip
-h |-?
-V Crie uma lista de arquivos compactados
-@List Crie um arquivo que contém todos os arquivos a serem descomprimidos e depois compactá -lo pelo nome do arquivo incluído
............. (para outros detalhes, consulte o arquivo de ajuda)
[@ListFile] é um registro de informações da lista de arquivos compactados
[Arquivos ...] são os vários arquivos a serem compactados, separados por espaços ou um curinga
exemplo:
Compressa todos os arquivos no diretório atual
wzzip test.zip *. *
Compressa todos os arquivos do tipo txt
wzzip test.zip *.txt
Compressa dois arquivos
wzzip test.zip abc.txt def.txt
Compressa todos os arquivos do tipo txt, exceto abc.txt
wzzip -xabc.txt test.zip *.txt
Compressa todos os arquivos e subdiretórios do tipo TXT em d:/docs
wzzip -rp test.zip d:/docs/*. txt
Atualize o arquivo em zipit.1st para test.zip
wzzip -u test.zip @zipit.lst
Liste a lista de arquivos compactados
wzzip -v test.zip
Use wzunzip.exe para descompactar o arquivo:
Por formato: wzunzip [options] zipfile [@listfile] [path] [arquivos ...]
[Opções] Inclua:
-C [M] A descompressão é exibir a lista de arquivos na tela DOS
-D reconstrua a estrutura do diretório no arquivo zip
-f descompacte apenas arquivos com o mesmo nome da pasta atual no arquivo zip.
-jhrs ignoram as propriedades ocultas, somente leitura e do sistema de arquivos em arquivos ZIP
-Jhrs apenas descompacte os arquivos com propriedades ocultas, somente leitura e do sistema
-n descompacte apenas o novo arquivo, substitua se o arquivo a ser descomprimido for mais novo que o existente.
-O não precisa usar o sim para determinar se deve substituir o arquivo
-V Crie uma lista de arquivos compactados
-@List Crie um arquivo que contém todos os arquivos a serem descomprimidos e depois descompacte -o pelo nome do arquivo incluído
............. (para outros detalhes, consulte o arquivo de ajuda)
Por exemplo:
Crie todos os arquivos para o diretório atual
wzunzip test.zip
Crie abc.txt de test.zip para o diretório atual
wzunzip test.zip abc.txt
Crie a estrutura do diretório e o arquivo em test.zip para o diretório atual
wzunzip -d test.zip
Crie a estrutura do diretório e o arquivo em test.zip para c:/docs
wzunzip -d test.zip c:/docs crie um arquivo que contém o nome do arquivo em files.ist do test.zip
wzunzip test.zip @files.lst
Mostre o conteúdo da lista de arquivos de test.zip
wzunzip -v test.zip
Exibir o conteúdo de todos os tipos de arquivo txt no arquivo compactado
wzunzip -v test.zip *.txt
Com a preparação acima, será fácil escrever VBs para executar a descompressão e a compactação de arquivos:
'test.vbs
'**************************
'O exposto acima inicia o programa com o objeto Shell
'**************************
Set wshshell = wscript.createObject (wscript.shell)
Wshshell.run (c: /wzzip.exe c: /test.zip c: /.txt c: /b.txt)
'test.asp
'**************************
'O exposto acima inicia o programa com o objeto Shell
'**************************
<idioma do script = vbscript.encode runat = server>
'O exposto acima inicia o programa com o objeto Shell
Set wshshell = server.createObject (wscript.shell)
ISSUCCESS = WSHSHELL.RUN (c: /wzzip.exe c: /test.zip c: /.txt c: /b.txt, 1, true)
Se ISSUCCESS = 0 então
O comando Response.Write foi executado com sucesso!
outro
O comando Response.Write falhou em executar! Permissões insuficientes ou o programa não pode ser executado no estado do DOS
final se
</script>
É muito simples. como:
Depois de enviar vários arquivos com o componente de upload, você pode embalar vários arquivos para fornecê -los a outras pessoas para baixar arquivos zip
Ou depois de fazer upload de um arquivo zip, você pode usar o programa para descomprimi -lo para fornecê -lo a outras pessoas para um único arquivo de download
Muito conveniente para os usuários! Vou escrever essas duas mudanças em artigos futuros! Há omissões inevitavelmente no artigo, por favor me corrija!
Todos os exemplos acima foram testados no Win2000+IIS5.0!