home *** CD-ROM | disk | FTP | other *** search
- page 64,132
- title bat-cd -- Batch file Directory Changer
- .RADIX 10
- ;
- ;
- ;
- ;*****************************************************************
- ; Public domain program by H. Fischer - HFischer@eclb 12/83
- ; Questions/problems to HFischer@eclb (213/902-5139).
- ;
- ; For DOS 2.0 and later....
- ;
- ; Modified by M. D. Parker -- 1/4/84
- ; This program had a little defect in that the default drive
- ; was not reset after this program was used.
- ; This version of the program will make the supplemental
- ; change drive call after a successful chmod DOS call.
- ;
- ; NOTE- The first character for CD output is used for
- ; obtaining the drive designator. The program ASSUMES
- ; this is capitalized!
- ;
- ; This program allows a batch file to change directories
- ; (just like the CD command), but to read the new directory
- ; from the "standard input file" instead of the command line.
- ; The command:
- ;
- ; bat-cd reads new directory from keyboard
- ; bat-cd < file reads new directory from "file"
- ; bat-cd <file >nul no display of new dir name when changing
- ;
- ; You can use the directory changer to change back to the
- ; directory a batch file started out with, such as when
- ; doing a spelling correction or fancy font printing.
- ; .
- ; . (your batch file to do fancy font from any directory)
- ; .
- ; echo off
- ; cd > \bin\bat\starting.dir saves initial directory
- ; copy %1 \fancyfnt\temp/v make file local to pfont dir
- ; cd \fancyfnt go to pfont dir
- ; pfont +fi temp +fi romn12 (etc.) do printing
- ; del temp get rid of local file copy
- ; bat-cd <\bin\bat\starting.dir >nul return to user's directory
- ; echo on
- ;
- ; If you were going to, for example, a speller directory, which
- ; made changes to the file, then you would copy the local file back
- ; before changing directories back:
- ;
- ; echo off
- ; cd >\bin\bat\starting.dir save initial directory
- ; copy %1 \speller\temp.txt/v make your file local
- ; cd \speller
- ; spellit temp.txt
- ; bat-cd <\bin\bat\starting.dir >nul change back to user's dir
- ; copy \speller\temp.txt %1/v copy spelling corrected file
- ; del \speller\temp.txt back & delete other copy
- ;
- ; Note that the new input is read as a single line, without
- ; any prompt, followed by a carriage return. If the input
- ; is not a valid directory, then the message "path not found"
- ; is placed on the standard output file (console, but redirectable
- ; if one wishes).
- ;
- ; To build this program:
- ; 1) asm bat-cd
- ; 2) link bat-cd
- ; 3) exe2bin bat-cd.exe \bin\bat-cd.com (name your path dir!)
- ; 4) del bat-cd.exe
- ;
- ;********************************************************************
- code segment para
- assume cs:code
- org 100h
- CD proc far
- START:
- mov ax,cs ; make this mess addressable via ds
- mov ds,ax
- assume ds:code
- mov dx,offset buffer
- mov ax,0c0ah
- int 21h ; read the new directory name
- mov bh,0 ; stuff a zero at the end
- mov bl,buflen ; of the name just read
- mov entry[bx],bh
- mov dx,offset entry
- ;
- ; now lets do the CD command
- ;
- mov ah,3bh
- int 21h ; change the directory
- cmp ax,3 ; error code?
- jne done
- mov dx,offset error ; display error if bad path
- mov ah,9
- int 21h
- done:
- ;
- ; first lets change the default directory back
- ;
- mov dl,entry ;get first character from input
- sub dl,'A' ;NOTE- must be capital letter
- mov ah,0eh ;command to DOS for default changing
- int 21h ;call DOS to do the dirty work
- int 20h ;nightie night to this program
-
- buffer db 64 ; longest path is 63 chars & c/r
- buflen db 0 ; dos-read length
- entry db 64 dup(0) ; the new directory name
- error db 'path not found',10,13,'$'
- saveit db 0
- CD endp
- code ends
- end start
-
-