Qzip Version 1.20 Copyright (c) 1991 - 1994 by Michael Leavitt, All Rights Reserved Quick Command Reference: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Usage: QZIP [-options] [-b path] [-t mmddyy] zipfile list [-x list] [-options]: -a add files to zipfile (default) -c add file comment, -z add zipfile comment -d delete listed entries from zipfile -f freshen, only add changed files -h show internal quick help screen -i, -s, -0...9 compress i=implode, s=shrink, 0=min, 9=max -m move files into zipfile, delete originals -n don't try to compress pre-compressed files -o set zip date to date of newest entry -p store directory names in zipfile -r recurse, include files in subdirectories -u update, only add changed or new files -v use BIOS video -x exclude files listed from being added -+ don't use EMS memory -) don't use 32-bit instruction set The option letters must be preceded by a minus sign (-) or slash (/); multiple options can follow one minus sign / slash, or each option can have a minus sign / slash in front of it. Options are not case sensitive. You can mix upper and lower case option letters on the command line. A detailed description of the options can be found later in this document. [-b path]: -b specify drive or directory for temporary files. Temporary files created during Qzip's operation will be placed in the location you specify after the -b switch, or in the current directory if no -b path is given. Be sure to include a space between the -b option and the path. [-t mmddyy]: -t don't include files earlier than this date. If this option is specified, only files newer than MMDDYY will be included in the zipfile. Be sure to include a space between the -t option and the date. zipfile: The name or pathname of the zipfile to create or modify. The .ZIP extension will automatically be added to this name if you do not specify an extension. list: A list of files to add to the zipfile. You may specify more than one filename or pathname here, and DOS wildcard characters are fully supported. You may also use @list here, where 'list' is an ASCII text file containing a list of the filenames or pathnames to add to the zipfile. [-x list]: -x don't include any of these files in zipfile. This is an optional list of filenames or pathnames to exclude from being included in the zipfile; DOS wildcard characters are fully supported. You may also use @list here, where 'list' is an ASCII test file containing a list of the filenames or pathnames to exclude from the zipfile. Program License Information: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Qzip Version 1.20 is copyrighted commercial software. You are granted a limited license to use this program in conjunction with Sparkware's 1st Reader, and in compliance with the usage restrictions of 1st Reader. You may not copy this program or its documentation for any purpose other than backup purposes. Distribution of this program or its documentation to persons other than registered users of 1st Reader is expressly prohibited and a violation of federal laws. Michael Leavitt, the author of the Qzip code, and Sparkware hereby disclaim all warranties relating to this software, whether expressed or implied, including without limitation any implied warranties of merchantability or fitness for a particular purpose. Neither the author nor Sparkware will be liable for any special, incidental, consequential, indirect or similar damages due to loss of data or any other reason, even if the author, Sparkware, or an agent of the author or Sparkware has been advised of the possibility of such damages. In no event shall the author's or Sparkware's liability for any damages ever exceed the price paid for the license to use the software, regardless of the form of the claim. The person using the software bears all risk as to the quality and performance of the software. Program Description: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Qzip can create, modify, and update ZIP files. Zipfiles created by Qzip can be extracted by Qunzip or any version of PKUNZIP greater than 1.00. All PKZIP features are supported except encryption and AV codes. For maximum compatibility, Qzip creates ZIP files in PKZIP 1.00 format. This means that files created by Qzip can be unzipped by any version of PKUNZIP thru version 2.04. However, Qzip compresses files much smaller than PKZIP 1.10, retaining full compatibility with earlier versions of PKUNZIP while providing the benefits of advanced compression. Qzip provides a colorful pop-up display that includes an animated compression status display. This allows Qzip to be run as a shell process from another program and appear to be an integrated part of that program. Qzip provides fast performance, but uses much less memory than PKZIP when operating. Qzip automatically detects if your system has EMS (Expanded) memory, and makes use of it to reduce the amount of DOS memory used and to increase operating speed. On systems without EMS memory, Qzip needs at least 184K of free DOS memory to run. On systems that do have EMS memory, Qzip only needs at least 179K of free DOS memory to operate. This memory requirement varies with the number of files being added to a zipfile, and normally is less than the above figures. Like Qunzip, Qzip is a '32-bit clean' application and will run under Windows or OS/2 in protected mode just as well as it runs under DOS. Examples: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ To use Qzip to add every file in the current directory to a zipfile called MYFILE.ZIP: QZIP myfile *.* To create a zipfile called MYFILE.ZIP that contains not just the contents of the current directory, but also the contents of all subdirectories under the current directory: QZIP -r myfile *.* To create the same zipfile as the previous example, but also store the subdirectory names so that when it is unzipped the subdirectories can be recreated: QZIP -rp myfile *.* If you're zipping to save disk space, you might want to delete the source files after they've been included in the zipfile. To create MYFILE.ZIP containing the contents of the current directory, and automatically delete the originals when the zipfile is built: QZIP -m myfile *.* When given the name of an existing zipfile with any of the above commands, Qzip will update the zipfile, replacing identically named entries and adding new entries for files that aren't already present in the zipfile. Other options are available when updating a zipfile. For example, if you would like to update the contents of MYFILE.ZIP, replacing any files in the zipfile with newer ones from the current directory and adding entries for those which are not already stored in the zipfile: QZIP -u myfile *.* Of if you'd like to 'freshen' MYFILE.ZIP with newer files from the current directory - but not add any files to the zipfile that aren't already present: QZIP -f myfile *.* Another restriction that can be used with adding, updating, or freshening is -t (time), which will not operate on files modified earlier than the specified date. To add to MYFILE.ZIP only those files that have a file date newer than 04/09/92: QZIP -t 040992 myfile *.* You can exclude certain files from the zipfile when you create it using wildcards. If you'd like to create MYFILE.ZIP and include everything in the current directory except EXE files: QZIP myfile *.* -x *.exe And you can delete files from an already existing zipfile. If you'd like to remove OLDFILE.TXT from MYFILE.ZIP: QZIP -d myfile oldfile.txt @List files: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ An @list file is a simple ASCII text file with one filename or pathname per line containing a list of files that you want Qzip to include into (or exclude from) the zipfile it is building. DOS wildcard characters are fully supported within @list files. For example, if a text file called FILES.LST includes the following lines: MYSTUFF.DAT *.EXE C:\TEMP\*.* And you run Qzip like this: QZIP myfile @files.lst Qzip will create MYFILE.ZIP containing MYSTUFF.DAT, all the EXE files in the current directory, and the entire contents of the C:\TEMP subdirectory. If you create an additional text file called NO.LST and include the following lines: *.BAK *.COM And run Qzip like this: QZIP myfile @files.lst -x @no.lst Then Qzip will create MYFILE.ZIP just as above, but no files with a .BAK or .COM extension will be included in the zipfile. @list files can be used in conjunction with filenames on the Qzip command line also. For example: QZIP myfile foo.com @list.lst Will create MYFILE.ZIP containing FOO.COM as well as all the files listed in the LIST.LST file. Compression Options: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Qzip automatically selects the best compression method to use on a file by file basis as it creates a zipfile. In most cases, the selection that Qzip makes is optimum - but there may be times when you wish to override this selection. Qzip can use three different methods for packing your file: implode, shrink, or store. Usually, implode provides the best compression, but sometimes shrink is better - especially for smaller files. Sometimes, neither implode nor shrink produces a packed version smaller than the original file, in which case the file is stored in the zipfile with no compression (store). Shrinking is faster than imploding, so if speed is more important to you than compression efficiency the -s option can be used to force Qzip to either shrink or store files. If you are compressing large files only (greater than 32K), then using the -i option to force Qzip to implode or store files will be faster than no option at all. Further control is provided over the speed of implosion with options -0 (fastest, least compression) to -9 (slowest, best compression). The default value is -5. In nearly all cases, a file that is already compressed can't be compressed further by Qzip - or it it can, the effect is minimal. By default, Qzip will attempt to compress all files you specify. But if you include the -n option on the command line, Qzip will simply store all files ending in .ZIP, .ARC, .LZH, and .ARJ suffixes. This avoids Qzip wasting time trying to compress them again. You can override this default selection of extensions to avoid by setting the NOZIP DOS environment variable. If the NOZIP environment variable is set, Qzip will use the extensions listed there as its list of file types to not compress. Extensions in the NOZIP environment variable must be separated with semicolons. For example: SET NOZIP=.ZIP;.ARC;.ARJ;.LZH;.GIF;.TIF If the NOZIP environment variable exists but is empty, or contains just a semicolon, QZIP -n will store all entries and do no compression on any of them. Memory and Performance: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ The less free memory Qzip has available to run in, the slower it will operate. When memory is extremely tight, Qzip will sacrifice some compression efficiency to enable it to continue to operate. For best performance, provide as much free RAM as possible - Qzip will use up to 400K if it's available to provide the greatest possible speed. At least 210K is needed to provide full compression efficiency. The loss in compression with lower amounts of memory is negligible, though. Zipfile Comments: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ One line comments can be added for each file in the zipfile by using the -c option. The zip operations will be done first, then you will be prompted for a one line comment for each file. You can enter a comment at this point, or just press enter for no comment. The -z option will prompt you for a multi-line comment for the entire zipfile. This option can be used by itself, or in combination with other options. After the zip operations are completed, you will be presented with a full-screen entry area for your file comment. End your comment entry with a line containing just a period. Also, you can redirect a text file into the zipfile comment. To add the contents of COMMENT.TXT to MYFILE.ZIP: QZIP -z myfile < comment.txt Detailed Description of Qzip Options: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -0...9 implosion level. These numeric options select the level of implosion to use in compressing files. See 'Compression Options' above for more information. -a add files to zipfile (default) This is Qzip's normal mode of operation. This command has no effect, but is provided for compatibility with programs that pass this option by default. -b specify drive or directory for temporary files. Temporary files are created during Qzip operation. These files are placed in the directory where the zipfile is being created by default, but you can have Qzip build its temporary files in another location (like on a ramdrive) by including the -b option and the directory where you want the temporary files to be placed. For example, QZIP -b \temp myfile *.* causes Qzip to create MYFILE.ZIP containing everything in the current directory, but create its temporary files in the \temp directory. -c add file comment The -c option tells Qzip that you would like to add a one-line comment to each file in the zipfile. After the zip operations are complete, Qzip will prompt you for comments for each file. See 'Zipfile Comments' above for more information. -d delete listed entries from zipfile This option is only useful when updating an already existing zipfile. It tells Qzip to delete from the zipfile all filenames following on the command line. -f freshen, only add changed files This option is only useful when updating an already existing zipfile. When this option is in use, Qzip will 'freshen' the contents of the zipfile. Only filenames that already exist in the zipfile will be replaced, and only if the source files are newer. No new files will be added to the zipfile. -i implode only The -i option tells Qzip to implode or store only. See 'Compression Options' above for more information. -h help The -h option causes Qzip to pop up a quick on-screen reference to the most commonly used options. -m move files into zipfile, delete originals The -m option tells Qzip to 'move' the source files into the zipfile and delete the originals when done. Qzip will not delete the original files until the zipfile has been completely built with no errors. -n don't try to compress pre-compressed files This option tells Qzip to not bother trying to compress files that are already compressed. See 'Compression Options' above for more information. -o set zip date to date of newest entry By default, Qzip dates the zipfile with the date and time of its creation. If you'd like the time and date of the zipfile to reflect the time and date of the newest file inside the zipfile instead, use this option. -p store directory names in zipfile By default, Qzip just stores the filenames of the files it packs into a zipfile. However, by using the -p option you can tell Qzip to include the complete pathname of the file. Files created using this option can be unzipped using the -d option on Qunzip or PKUNZIP to extract the files into the same subdirectories that they came from. -r recurse, include files in subdirectories When you specify files to include in a zipfile using wildcards, Qzip normally only includes files in the current directory or the directory that you specify. Adding the -r option tells Qzip to 'recurse' through all subdirectories below the one you specify, including files found there also. For example, QZIP -r bigfile c:\*.* would create BIGFILE.ZIP containing every file on drive c. -s shrink only The -s option tells Qzip to shrink or store files only. See 'Compression Options' above for more information. -t don't include files earlier than this date. If this option is specified, only files newer than MMDDYY will be included in the zipfile. For example, QZIP -t 040992 myfile *.* will create MYFILE.ZIP containing all files in the current directory with dates newer than 04/09/92. -u update, only add changed or new files This option is only useful when updating an already existing zipfile. It tells Qzip to only 'update' the file; files already in the zipfile will only be replaced if the source file is newer, and any source files that don't already exist in the zipfile will be added. -v use BIOS video Qzip produces its display using direct video memory access to provide the greatest possible speed. This method of updating the screen is compatible with all 'IBM standard' display adapters and you should have no need to use the -v option. However, if your display adapter is 'non-standard' and the Qzip display appears scrambled or doesn't appear at all, adding the -v option to the command line will cause Qzip to use the video BIOS routines built into your machine to update the display. This option is also useful to eliminate screen 'snow' that may appear on old CGA displays while the screen is being updated. -z add zipfile comment This option can be used alone or in conjunction with other options to cause a zipfile comment to be added to the zipfile. See 'Zipfile Comments' above for more information. -x don't include any of these files in zipfile. This is an optional list of filenames or pathnames to exclude from being included in the zipfile; DOS wildcard characters are fully supported. For example, QZIP myfile *.* -x *.exe will create MYFILE.ZIP containing everything in the current directory except files with the .EXE extension. -+ don't use EMS memory. Qzip automatically detects and makes use of EMS memory if your system is so equipped. If your system's EMS memory is malfunctioning, the zipfiles created by Qzip may be corrupted. Adding the -+ option to the Qzip command line tells Qzip to not use EMS memory; this can be used as a 'work around' for troublesome systems. -) don't use 32-bit instructions. Qzip automatically detects 80386 and higher processors, and uses 32-bit instructions on those machines to provide greater performance. Qzip is '32-bit clean' and you should never need to use this option. However, if you are running Qzip in an operating environment that does not allow the use of 32-bit instructions you can add this option to the command line to force it to use 8088 instructions only. Qzip Error Messages: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Unexpected end of zip file: While Qzip was reading the zipfile that it was updating, it reached the end of the file before all necessary data was read. The zipfile is damaged. Zip file structure invalid: The zipfile that Qzip was trying to update is not a valid zipfile, or is corrupt. Out of memory: There is not enough memory for Qzip to run. Make sure you have enough free DOS memory to run Qzip. Internal logic error: Qzip's internal self-checking has found an error. You should never encounter this error message - if you do, please report this error to the author. Invalid comment format: The zip comment in the zipfile that Qzip is trying to update is invalid. This zipfile is most likely corrupt. Temporary file failure: Qzip creates temporary files when updating an existing zipfile. It was unable to do so because the disk is full, or the temporary directory you specified with the -b option is invalid. Also, if your system's EMS memory is malfunctioning this error can result. Adding the -+ option to the command line might help; see the description of that option above. Input file read failure: Qzip was able to locate and start reading the input file, but an error occured as it continued to read the file. This error is most likely to happen when another process is using this file on a network or multi-tasker and SHARE is not loaded. A hardware error can also cause this error message. Nothing to do!: You tried to add non-existent files to a zipfile, or the options specified on the command line were invalid. Missing or empty zip file: The zipfile you are asking Qzip to update can't be located, or it contains no files. Output file write failure: Qzip was unable to create the requested zipfile because the disk is full. Delete some unnecessary files and try again. Could not create output file: Qzip was unable to create the zipfile. Either you tried to create the zipfile in a non-existent subdirectory, a network directory that you don't have access rights to, or the subdirectory where you are trying to create the zipfile is full, or you're updating an existing zipfile that is marked 'read only'. Invalid command arguments: The command line options passed to Qzip are invalid or contradictory. File not found or no read permission: The file that Qzip was trying to read either does not exist, is not in the directory you specified, is locked by another process on a network or multi-tasker, or is located in a network subdirectory that you do not have access rights to. Drive not ready: DOS was unable to access the drive you specified; if this was a floppy drive, check to make sure the disk is inserted. If you specified a hard drive, a serious hardware problem is indicated. Error reading @list file: Qzip was unable to read the @list file that you specified on the command line. Check to make sure that you gave the correct filename and that this file is an ASCII text file with one filename or pathname per line. Exit Codes: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Qzip returns an exit code upon termination showing the status of its operation. These exit codes can be tested in batch files set up for unattended operation to determine if the Qzip operation was successful, and if not to indicate the cause of failure. A list of the possible exit codes and their meaning follows: 0 (Success): Qzip operation completed successfully; no errors detected. 2 (Unexpected end of zip file): End of file reached prematurely while reading the zipfile that was being updated. Zipfile is corrupt. 3 (Zip file structure error): Zipfile being updated has an invalid structure. Zipfile is corrupt. 4 (Out of memory): There was insufficient free memory for Qzip to run. 5 (Internal logic error): An internal error occured while processing file. Operation aborted. 7 (Invalid comment format): Zipfile being updated has an invalid zip comment. 9 (User abort): Control-Break was pressed to interrupt operation. 10 (Temp file error): An error occured while writing a temporary file; disk is full or an EMS problem has been encountered. 11 (Read error): Unable to read input file. 12 (Nothing to do): Commands given do not accomplish anything. 13 (Missing or empty zip file): Zipfile to update is empty or can not be found. 14 (Error writing to file): An error occured while writing an output file; disk is full. 15 (Error opening output file): Unable to open or create the new zipfile, or unable to overwrite an existing file of the same name. 16 (Invalid command line parameters): Command line options are invalid or contradictory. 18 (Error opening input file): Unable to open one of the files being added to the zipfile. 19 (Error reading @list file): Qzip was unable to read the @list filename that was given on the command line. Credits: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ PKUnzip and PKZip are trademarks of PKWARE Inc. DOS and Windows are trademarks of Microsoft Corp. IBM and OS/2 are trademarks of International Business Machines, Inc.