Comment emballer et compresser plusieurs fichiers téléchargés en appelant la ligne de commande WinZip côté serveur?
Pour résoudre ce problème, nous devons d'abord comprendre l'hôte de script Windows, appelé WSH! Voici une citation de l'explication de Microsoft:
**************************************************** ******* ***************************
* WSH est un type de série de technologie de script de Microsoft.
* Dans cet environnement, certains objets sont prédéfinis et d'autres objets dans COM peuvent également être utilisés. *
* Il utilise un moteur de script pour interpréter et exécuter les scripts.
* Les tiers peuvent également développer leurs propres moteurs de script. *
**************************************************** ******* ***************************
Pour être spécifique, vous compilez d'abord certains fichiers de script (Microsoft est livré avec quelques exemples, avec des suffixes.vbs ou .js).
Ensuite, utilisez un programme pour l'expliquer et l'exécuter, et ce programme s'appelle l'hôte de script Windows.
Le nom est wscript.exe (ou cscript.exe sur la ligne de commande), vous pouvez vérifier votre machine
Si vous avez ces deux fichiers, vous saurez s'il y a WSH. (Win2000 est sous Winnt / System32 /)
Ceci est très similaire à un fichier batch, sauf que le fichier n'est pas une ligne de commande, mais un script écrit dans la langue du script.
Présent brièvement plusieurs objets intégrés fournis avec WSH, notamment:
1. Objet fourni par wscript.exe
WScript est exposé au moteur de script en tant que WScript.
Wsharguments pas public; entrer
2. Objet fourni par wshom.ocx.
Objet automatique WSHShell. Progid est wscript.wshshell.
(Remarque: c'est ce que nous voulons utiliser, vous pouvez exécuter la commande DOS)
Objet automatique WSHNetwork. ProgId est wscript.wshnetwork.
WSHSHORTCUT n'est pas publique;
WSHURLSHORTCUT n'est pas publique;
WSHCollection n'est pas publiée;
Wshenvironment n'est pas publique;
WSHSpecialfolders n'est pas publique; accessible via la propriété WSHShell.folder.
Ils peuvent principalement compléter l'acquisition de variables environnementales, la connexion du réseau, la cartographie de lecteur et la création d'interception rapide.
Chargement du programme, dossiers spéciaux (tels que les dossiers du système) Acquisition d'informations et autres fonctions.
Si votre système prend en charge ADO et d'autres composants COM, vous pouvez également l'utiliser.
L'exemple suivant démontre l'ouverture d'un WordPad pour afficher un fichier texte, créant un fichier texte et écrivant un
Vous pouvez le copier sur la carte d'écriture, puis l'enregistrer avec .vbs en tant que suffixe, puis double-cliquez-le.
'Test.vbs
'************************
'Ce qui suit est de démarrer le programme avec l'objet Shell
'************************
Définir wshshell = wscript.createObject (wscript.shell)
Wshshell.run (notepad & wscript.scriptfullname)
'************************************************* *****
'Utilisez COM Object Scripting.FileSystemObject pour faire fonctionner les fichiers texte
'************************************************* *****
Set fs = wscript.createObject (scripting.fileSystemObject)
Set a = fs.createtextfile (c: /testfile.txt, true)
A.WriteLine (c'est un test.)
a.close
Il peut également être appliqué dans des langages de programmation Web tels que ASP
<Script Language = VBScript.encode runat = server>
'Ce qui précède commence le programme avec l'objet Shell
Définir wshshell = server.createObject (wscript.shell)
Issucess = wshshell.run (d: /winnt/system32/cmd.exe, 1, true)
Si émetteur = 0 alors
La commande Response.Write a été exécutée avec succès!
autre
La commande Response.Write n'a pas réussi à s'exécuter! Les autorisations insuffisantes ou le programme ne peuvent pas s'exécuter dans DOS State
terminer si
</cript>
Note:
1. Le serveur runat = doit avoir
2.Set wshshell = wscript.createObject (wscript.shell)
Pour changer pour définir wshshell = server.createObject (wscript.shell),
3. Le paramètre 1 représente SW_Shownormal, active et affiche une fenêtre. Si la fenêtre est minimisée ou maximisée, elle sera restaurée à sa taille et à sa position d'origine.
4.True représente une erreur qui renvoie l'exécution, false ou est spécifiée que le script continue de s'exécuter sans attendre la fin du processus.
5. Appelant l'objet intégré de WSH, il peut être appelé comme des fonctions et des procédures d'appel.
Par exemple, appelez wshshell.run (d: /winnt/system32/cmd.exe, 1, true)
Si vous êtes intéressé par WSH et que vous souhaitez en savoir plus, veuillez le vérifier
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
Revenons maintenant au point et voyons comment comprimer et décompresser les fichiers!
Tout le monde sait que Winzip est facile à décompresser et à compresser les fichiers, mais comment les appeler via des programmes et des lignes de commande?
Bien sûr, l'auteur de Winzip a développé
Prise en charge de la ligne de commande de Winzip Version 1.0
Tout le monde peut aller sur http://www.winzip.com/wzcline.htm pour télécharger wzcline.exe!
La prémisse est que la machine doit installer Winzip8.0 ou un support plus élevé.
http://www.winzip.com/download.htm Télécharger!
Après le téléchargement, installez-le!
Le fichier et le programme d'aide à la ligne de commande de WinZip Wzzip.exe, wzunzip.exe seront générés dans le répertoire Winzip.
Vous pouvez commencer à exécuter des appels:
Par exemple: C: / / Program Files / Winzip / Wzzip MyFile.zip
Vous pouvez également copier deux fichiers ici dans n'importe quel répertoire et les exécuter directement sous la fenêtre DOS.
Par exemple: wzzip.exe myfile.zip
Vous pouvez ajouter SET PATH = C: / Windows; C: / Program Files / Winzip;
Vous pouvez l'appeler n'importe où sans ajouter de passe!
Maintenant, comprenons brièvement l'utilisation de base des deux commandes dans l'aide
Utilisez wzzip.exe pour compresser les fichiers:
Format général: wzzip [options] zipfile [@listfile] [fichiers ...]
[Options] Inclure:
-Une opération par défaut, fichier compressé
-a + compresser le fichier et supprimer le fichier à comprimer
-b [lecteur | chemin] consiste à créer des fichiers compressés temporaires sur un autre lecteur
-D Supprimer le fichier cible spécifié dans le fichier zip
-e <x | n | f | s | 0> est pour définir le rapport de compression, x est le maximum et 0 est le minimum
-f remplacer le fichier qui existe dans le fichier zip
-H | -?
-V Créer une liste de fichiers compressés
- @ list Créer un fichier qui contient tous les fichiers à décompression, puis compressez-le par le nom de fichier inclus
............. (pour d'autres détails, veuillez vous référer au fichier d'aide)
[@ListFile] est un enregistrement d'informations sur la liste des fichiers compressés
[Fichiers ...] sont les multiples fichiers à comprimer, séparés par des espaces ou un joker
exemple:
Compression de tous les fichiers dans le répertoire actuel
wzzip test.zip *. *
Compresser tous les fichiers de type txt
wzzip test.zip * .txt
Compresser deux fichiers
wzzip test.zip abc.txt def.txt
Compresser tous les fichiers de type txt sauf abc.txt
wzzip -xabc.txt test.zip * .txt
Compression de tous les fichiers et sous-répertoires de type txt sous d: / docs
wzzip -rp test.zip d: / docs / *. txt
Mettez à jour le fichier dans ziPit.1st pour tester.zip
wzzip -u test.zip @ ziPit.lst
Énumérez la liste des fichiers compressés
wzzip -v test.zip
Utilisez wzunzip.exe pour décompresser le fichier:
Par format: wzunzip [options] zipfile [@listfile] [path] [fichiers ...]
[Options] Inclure:
-c [m] La décompression est d'afficher la liste des fichiers dans l'écran DOS
-d reconstruire la structure du répertoire dans le fichier zip
-F Décompressez les fichiers avec le même nom que le dossier actuel dans le fichier zip.
-Jhrs ignorent les propriétés cachées, en lecture seule et système des fichiers dans les fichiers zip
-Jhrs ne décompressent que les fichiers avec des propriétés cachées, en lecture seule et système
-N Décompressez uniquement le nouveau fichier, remplacez si le fichier à décompression est plus récent que celui existant.
-o pas besoin d'utiliser oui pour déterminer s'il faut remplacer le fichier
-V Créer une liste de fichiers compressés
- @ list Créez un fichier qui contient tous les fichiers à décompression, puis décompressez-le par le nom de fichier inclus
............. (pour d'autres détails, veuillez vous référer au fichier d'aide)
Par exemple:
Créez tous les fichiers dans le répertoire actuel
wzunzip test.zip
Créer ABC.txt de Test.zip au répertoire actuel
wzunzip test.zip abc.txt
Créez la structure et le fichier du répertoire dans test.zip vers le répertoire actuel
wzunzip -d test.zip
Créez la structure et le fichier du répertoire dans test.zip sur c: / docs
wzunzip -d test.zip c: / docs Créer un fichier contenant le nom de fichier dans files.ist à partir de test.zip
wzunzip test.zip @ files.lst
Afficher le contenu de la liste de fichiers de test.zip
wzunzip -v test.zip
Afficher le contenu de tous les types de fichiers TXT dans le fichier compressé
wzunzip -v test.zip * .txt
Avec la préparation ci-dessus, il nous sera facile d'écrire VBS pour effectuer la décompression et la compression des fichiers:
'Test.vbs
'************************
'Ce qui précède commence le programme avec l'objet Shell
'************************
Définir wshshell = wscript.createObject (wscript.shell)
Wshshell.run (c: /wzzip.exe c: /test.zip c: /a.txt c: /b.txt)
'Test.asp
'************************
'Ce qui précède commence le programme avec l'objet Shell
'************************
<Script Language = VBScript.encode runat = server>
'Ce qui précède commence le programme avec l'objet Shell
Définir wshshell = server.createObject (wscript.shell)
Issucess = wshshell.run (c: /wzzip.exe c: /test.zip c: /a.txt c: /b.txt, 1, true)
Si émetteur = 0 alors
La commande Response.Write a été exécutée avec succès!
autre
La commande Response.Write n'a pas réussi à s'exécuter! Les autorisations insuffisantes ou le programme ne peuvent pas s'exécuter dans DOS State
terminer si
</cript>
C'est très simple. comme:
Après avoir téléchargé plusieurs fichiers avec le composant de téléchargement, vous pouvez emballer plusieurs fichiers pour les fournir à d'autres pour télécharger des fichiers ZIP
Ou après avoir téléchargé un fichier zip, vous pouvez utiliser le programme pour le décompresser pour le fournir à d'autres pour un seul fichier téléchargement
Très pratique pour les utilisateurs! J'écrirai ces deux changements dans les futurs articles! Il y a inévitablement des omissions dans l'article, veuillez me corriger!
Tous les exemples ci-dessus ont été testés sur Win2000 + IIS5.0!