[net.micro.pc] More Batch File Goodies

HFISCHER%USC-ECLB%SRI-NIC@sri-unix.UUCP (01/04/84)

I am submitting another utility for batch files, bat-cd, for the
INFO-IBMPC library.  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 +fo 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
   echo on

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

  Herm Fischer

attachment: bat-cd.asm
*********************************************************************
        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).
;
; 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
        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:   int     20h
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
-------