Microsoft KB Archive/116384

= ACC: Using the Shell Function to Run MS-DOS Commands =

Article ID: 116384

Article Last Modified on 5/6/2003

-

APPLIES TO


 * Microsoft Access 1.0 Standard Edition
 * Microsoft Access 1.1 Standard Edition
 * Microsoft Access 2.0 Standard Edition

-



This article was previously published under Q116384



Moderate: Requires basic macro, coding, and interoperability skills.



SUMMARY
This article describes and gives an example of how you can use the Shell function in Access Basic to run intrinsic MS-DOS commands, such as Copy, Dir, Del, and so on.

This article assumes that you are familiar with Access Basic and with creating Microsoft Access applications using the programming tools provided with Microsoft Access. For more information about Access Basic, please refer to the "Building Applications" manual.



MORE INFORMATION
The Shell function in Access Basic requires that you specify a file that has an extension of .EXE, .COM, .BAT or .PIF. These file types are registered as executable applications in the listed locations in the following operating environments:

  Windows 3.x and Windows for Workgroups 3.x   -- Filename: WIN.INI Section: [windows] Item: Programs=com exe bat pif

Windows NT 3.x  -- Filename: REGEDT32.EXE Registry Key: HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows Value: Programs Type: REG_SZ Item: com exe bat pif cmd

Using the Shell function to run MS-DOS commands requires the use of the COMMAND.COM program. The COMMAND.COM program supports two optional parameters that you can use to run an intrinsic (or built in) MS-DOS function:


 * COMMAND /C: This syntax runs a built in function, and then closes the MS-DOS session.
 * COMMAND /K: This syntax runs a built in function and returns the MS-DOS command prompt.

Example
To create a sample application that demonstrates the use of these techniques, follow these steps:

  Create a module and type the following line in the Declarations section:

     Option Explicit   Type the following two functions:

Function ShellDOS_Exit As Integer On Local Error Goto ShellDOS_Exit_Err Dim MyCommand As String Dim TaskId As Integer ' Create command string to show the contents of current ' directory. Upon completion the window closes. MyCommand = "COMMAND.COM /C DIR /P" TaskId = Shell(MyCommand, 1) ShellDOS_Exit = True ShellDOS_Exit_End: Exit Function ShellDOS_Exit_Err: MsgBox Error$ Resume ShellDOS_Exit_End End Function

Function ShellDOS_Stay As Integer On Local Error Goto ShellDOS_Stay_Err Dim MyCommand As String Dim TaskId As Integer ' Create command string to show the contents of current ' directory. Upon completion the window remain opens ' at the MS-DOS prompt. MyCommand = "COMMAND.COM /K DIR /P" TaskId = Shell(MyCommand, 1) ShellDOS_Stay = True ShellDOS_Stay_End: Exit Function ShellDOS_Stay_Err: MsgBox Error$ Resume ShellDOS_Stay_End End Function  To test the first function, type the following line in the Immediate window, and then press ENTER:

? ShellDOS_Exit

Note that the MS-DOS window displays the contents of the current directory (prompting you to press a key if the contents of the directory exceeds one display page) and returns True as a result of the function. To test the second function, type the following line in the Immediate window, and then press ENTER:

? ShellDOS_Stay

Note that the MS-DOS window displays the contents of the current directory (prompting you to press a key if the contents of the directory exceeds one display page) and then keeps the MS-DOS session open and active, displaying the MS-DOS command prompt. The function also returns True as a result.

<div class="references_section">