MOVE, written by Kai Iske August 16. 1993 This is PUBLIC DOMAIN; you may do with it whatever you like If you change/republish/delete/sell the program or do anything similar, please be so kind to keep my name within the program and all the other files. I wrote Move because all of the available moves out there couldn`t suffice my needs. They lacked this and that, so I wrote my own which also includes switches like those known from e.g. Rename. MOVE was written using SAS 6.3.... !!! Move requires OS 2.x and up to run, Move is PURE !!! ------------------ What does MOVE ??? ------------------ Well, it moves files from here to there. You may issue as many source files as there fit on one command line, even including patterns. Issuing directory names will cause Move to create a directory of the same name within the destination directory (if not already existent) and move all the files from the source directory to the new destination. Furthermore all directories within the source will be collected recursively. There are several options for Move: Move FROM/M,TO/A,CLONE/S,DATES/S,NOPRO/S,COM/S,QUIET/S,NOREQ/S,FORCE/S Explanation FROM : From file(s)/pattern(s) TO : Destination directory A destination file will be accepted only if there are no multiple files to be moved. CLONE : Clones file date, file comment and protection bits DATES : Only file dates and file protection will be cloned NOPRO : Per default the protection bits will be cloned. You may disable this feature using NOPRO COM : Only file comments and file protection will be cloned QUIET : Per default Move runs in verbose mode, ie. all file-/dirnames will be printed within the Shell. This option will disable verbose mode. NOREQ : This one is used to disable "Please insert xxx in yyy" Requesters FORCE : Move a read-/deleteprotected file to a write/deleteprotected file, i.e. no matter what bits are set for a source/destination file, it will be moved/overwritten. BUFFER: This option may be used during inter-device moves. Normally move will allocate as much memory as needed to hold the complete file in ram so that only one Read()/Write() pair is needed in order to accomplish the move. If there isn`t enough memory for the file, Move would try to "fall back" to a suited memory size. You may use this option to tell Move the maximum buffer size. The size specified will be interpreted as KB, so that a value of 1 will result in a 1KB buffer. Examples Move *.c *.h SMakeFile PictureDir t: Will move all files ending with ".c"/".h", a file called SMakeFile, and a directory PictureDir to t: (PictureDir will be created then) ----------------------- How to install MOVE ??? ----------------------- Simply copy it to a directory within you search path (eg. C:) ----------- Version 1.0 ----------- - initial release ----------- Version 1.1 ----------- - Added well known CLONE, DATES, COM, NOPRO, QUIET and NOREQ options also used by e.g. Rename ----------- Version 1.2 ----------- - Added CTRL-C checking - Added FORCE Flag in order to move read/deleteprotected or to overwrite a delete/writeprotected files ----------- Version 1.3 ----------- - UnLock Problem solved when doing recursive Dir-Moves This bug lead to "Object in use" error messages ----------- Version 1.4 ----------- - Now uses Rename() when source and dest are on the same device. This is faster ;) Why haven`t I thought of that earlier ??? ;) ----------- Version 1.5 ----------- - Freed the FileInfoBlock _BEFORE_ setting the Bits, Comment etc. This lead to MungWall hits (of course it did) (Reported by Nico Francois) - Exidentially called one ExAll() without ED_SIZE This lead to some calls to DoTheMove without the Size set ;) (Reported by Karsten Weiss) ----------- Version 1.6 ----------- - Move got screwed up, when attempting to move a zero size file - Added Buffer Keyword to specify the maximum buffer size for an inter device move. Normally Move would have used the max amount of available free memory in order to accomplish the move, or the size needed by the file... (Suggested by : Christof Damian) - One couldn`t rename a file using move, because the "destination" file was removed before doing the rename, ie. the source file was deleted. (Reported by : Chris Conger) ----------- Version 1.7 ----------- - Error while moving to a "device full" disk (Reported by : Chris Conger) - FileName length-bug fixed (Reported by : Juergen Lang) - Recompiled using SAS 6.50 - Stack usage reduced ----------- Version 1.8 ----------- - Added PURE information to Doc, since Move really is pure (Suggested by : Albert-Jan Brouver) - Due to the move-renaming bug one couldn`t rename a dir an Assign was put on. (Reported by : Albert-Jan Brouver) - Fixed move-renaming of directories. (Reported by : Albert-Jan Brouver) - Move had some severe problems recursively moving the contents of a directory Hope you like it, if not, delete it...... So long, Kai --- Kai Iske Brucknerstrasse 18, 63452 Hanau, Germany, Tel.: +49-(0)6181-850181 Z-Net : KAI@SWEET.ZER usenet : kai@iske.adsp.sub.org internet : iske@informatik.uni-frankfurt.de IRC:kiske ---- Life sucks ----