[net.micro.pc] Renaming subdirectories

connery@bnrmtv.UUCP (Glenn Connery) (01/28/86)

The following will do what you want.  Just change to the parent of the
directory you are trying to rename and run it.  Think this came from
PC Tech Journal.  A debug session to create a similar program was in a
recent PC Magazine...

	      PAGE      ,132
;
; RENDIR - renames directories or volume labels... using DOS function
;          17H (FCB call).  thus the program only works for directories
;          immediately under the current one.
;
; from PC Tech Journal, April 1985, p. 41
;
COM           SEGMENT
	      ASSUME    CS:COM,DS:COM
	      ORG       5CH
FCB1          LABEL     BYTE
DRIVE1        DB        ?
NAME1         DB        11 DUP(?)
	      ORG       6CH
FCB2          LABEL     BYTE
DRIVE2        DB        ?
NAME2         DB        11 DUP(?)
	      ORG       100H
RENDIR        PROC
	      MOV       DX,OFFSET INVDR$
	      TEST      AL,AL
	      JNZ       ERROR
	      MOV       DX,OFFSET INVPAR$
	      CMP       NAME1,' '
	      JE        ERROR
	      CMP       NAME2,' '
	      JE        ERROR
	      MOV       SI,OFFSET      FCB1
	      MOV       DI,OFFSET      OLDN
	      MOV       CX,12
	      REP       MOVSB
	      MOV       SI,OFFSET NAME2
	      MOV       DI,OFFSET OLDN+11H
	      MOV       CX,11
	      REP       MOVSB
	      MOV       DX,OFFSET XFCB
	      MOV       AH,17H
	      INT       21H
	      TEST      AL,AL
	      JZ        EXIT
	      MOV       DX,OFFSET INVNAM$
ERROR:        MOV       AH,9
	      INT       21H
EXIT:         INT       20H
RENDIR        ENDP
INVDR$        DB        'Invalid drive id$'
INVPAR$       DB        'Bad syntax: [d:]oldname newname$'
INVNAM$       DB        'Name not found or already exists$'
XFCB          DB        0FFH           ;Extended FCB ID BYTE
	      DB        5 DUP(0)
ATTR          DB        18H            ;Dirs & Volume Labels
OLDN          DB        37 DUP(0)
COM           ENDS
	      END       RENDIR

-----
Glenn