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 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