Accepting Keyboard Input in Batch Files
This article was previously published under Q77457
This article has been archived. It is offered "as is" and will no longer be updated.
The MS-DOS batch language facility does not provide a means for you toprovide input to control program flow. All information input from youmust be entered from the command line.
By using a short program created with the MS-DOS Debug utility, youcan provide information at the time of batch file execution.
NOTE: Although the Debug program works with MS-DOS 6.0 or 6.2, it isnot required. If you are using MS-DOS 6.0 or 6.2, type help choiceat the MS-DOS command prompt for more information.
The Debug program at the end of this article will wait for you toinput a character from the keyboard and set the value of "errorlevel"equal to the ASCII code value of the character entered. For a list ofASCII characters and their associated values, see the ANSI.SYS sectionin your MS-DOS manual.
Most keyboard characters are represented by only one code. However, thefunctions and ALT key combinations send two codes: a zero, followed byanother code. The REPLY.COM program will set "errorlevel" equal to thesecond code passed. For example, the F8 key sends a zero followed bythe value 66. This will be interpreted by REPLY.COM as the character"B," which has an ASCII value of 66.
REPLY.COM can be used within batch files to allow user input to controlthe flow of the program. For example, the following AUTOEXEC.BAT fileallows you to determine whether or not to install a mouse driverduring startup:
@Echo off path=C:\DOS :Ask Echo Install Mouse Driver (y/n)? Reply If errorlevel 121 if not errorlevel 122 goto install If errorlevel 89 if not errorlevel 90 goto install If errorlevel 110 if not errorlevel 111 goto NoMouse If errorlevel 78 if not errorlevel 79 goto NoMouse goto ask :install c:\mouse\mouse :NoMouse cls verFor more information about using the "errorlevel" environmentvariable, query on the following word in the Microsoft Knowledge Base:
REPLY.COMTo create REPLY.COM, enter the text listed in the Instruction column.Press ENTER after each instruction. Do not enter the text listed inthe Comment column; it is for your reference.
Instruction Comment ----------- ------- DEBUG Executes MS-DOS DEBUG utility-A 100 Begin assembling instructions at memory location100xxxx:0100 MOV AH,08 Get character input without echoxxxx:0102 INT 21 Perform MS-DOS servicexxxx:0104 CMP AL,0 Compare AL with zeroxxxx:0106 JNZ 010A If lead zero, get second code of characterxxxx:0108 INT 21 Perform MS-DOS servicexxxx:010A MOV AH,4C Terminate process with return codexxxx:010C INT 21 Perform MS-DOS servicexxxx:010E <ENTER>-rcxCX 0000:e-n REPLY.COM-wWriting 000E bytes-q
"Supercharging MS-DOS," pages 97-98, by Van Wolverton, MicrosoftPress, 1989, 1991 (Updated for Version 4).
6.22 3.20 3.30 3.30a 4.00 4.00a 5.00 5.00a 6.00 6.20
Article ID: 77457 - Last Review: 12/04/2015 09:10:33 - Revision: 2.0
Microsoft MS-DOS 3.1, Microsoft MS-DOS 3.2 Standard Edition, Microsoft MS-DOS 3.21 Standard Edition, Microsoft MS-DOS 3.3 Standard Edition, Microsoft MS-DOS 3.3a, Microsoft MS-DOS 4.0 Standard Edition, Microsoft MS-DOS 4.01 Standard Edition, Microsoft MS-DOS 5.0 Standard Edition, Microsoft MS-DOS 5.0a, Microsoft MS-DOS 6.0 Standard Edition, Microsoft MS-DOS 6.2 Standard Edition, Microsoft MS-DOS 6.21 Standard Edition, Microsoft MS-DOS 6.22 Standard Edition
- kbnosurvey kbarchive KB77457