Windows OS

Batch File Prompt for Input: How to Create Interactive Batch Scripts

Batch scripting is an impressive tool for computerizing tasks on Windows systems, but the real magic happens when we add interactivity. Interactive batch scripts enable the users to input the data, making the script dynamic and adaptable. In this guide, we’ll look into the art of creating interactive batch scripts, focusing on the fundamental concept of prompting for user input. We’ll unveil the steps that are required to build these scripts from scratch by providing a comprehensive understanding of each element involved.

How to Create Interactive Batch Scripts: A Step-by-Step Guide

On Windows systems, batch scripts are a crucial tool to automate the routine processes. By carrying out several commands consecutively, they can help us save time and effort. However, we sometimes need more than just a static script; we need a way to interact with the user, prompt for input, and make decisions based on their responses. This guide explores how to create interactive batch scripts that prompt the users for input, explain each step-in detail, and provide practical examples.

Understanding of the Basics

Before diving into interactive batch scripting, let’s establish a foundation by understanding some basic concepts.

  1. Batch Files: A batch file is a script that consists of a list of instructions that are executed one at a time. These files typically have a “.bat” extension and can automate various tasks on a Windows system.
  2. Command Prompt: Batch scripts are executed in Command Prompt, a text-based interface for running the commands and scripts. Users can interact with batch scripts through the Command Prompt window.

Opening the Command Prompt

We need to open the Command Prompt to create and run the batch scripts. Begin by running the dialogue box by pushing the “Win + R” keys. Input “cmd” and hit “Enter”. The command line prompt will open as a result.

Creating an Interactive Batch Script

Now that we have the Command Prompt open, let’s create an interactive batch script. We begin with a straightforward illustration that asks the user for their name before addressing them. Launch a text editor like Notepad. Enter the subsequent code in the text editor:

@echo off
set /p name=Enter your name:
echo Hello, %name%!
pause

Save the file with a “.bat” extension (e.g., “greet.bat”).

Understanding the Script

Let’s break down the script that we just created:

  1. @echo off – This command turns off the display of each command as it is executed, making the script cleaner.
  2. set /p name=Enter your name: – This line prompts the user for input, storing their response in the “name” variable.
  3. echo Hello, %name%! – The script then displays a greeting using the value that is stored in the “name” variable.
  4. pause – By pausing the script with this command, the user can view the results prior to the command prompt window closing.

Running the Script

To run our interactive batch script, open the Command Prompt and navigate to the directory where our script is located using the “cd” command. Then, type the script’s filename (e.g., “greet.bat”) and press “Enter”.

cd Documents
name of the batch script file

The script prompts us for our name and then greets us using the name that we provided. The script displays “Enter your name:” in the Command Prompt. A name entry box will then be accessible to the user. A welcoming message such as “Hello, [user’s name]!” will appear once the user types their name and hits “Enter”. After that, the script will stop working and waits for the user to push another key. The user can view the output during this brief gap before the Command Prompt dialogue box closes.

Adding Conditional Logic

Interactive scripts become more powerful when we add conditional logic. Let’s modify our script to greet the user in another way based on the time of the day. Open the batch script in a text editor and modify the code as follows:

@echo off

setlocal enabledelayedexpansion

:: Get the current hour

for /f "tokens=1,2 delims=:" %%a in ('time ^| find "current"') do (

  set /a "hour=%%a"

)

:: Determine the greeting based on the time of day

if !hour! geq 0 if !hour! lss 12 (

  set greeting=Good morning

) else if !hour! geq 12 if !hour! lss 17 (

  set greeting=Good afternoon

) else (

  set greeting=Good evening

)

  set /p name=Enter your name:

echo !greeting!, %name%!

pause

Save the file, then execute it as usual. The user is greeted appropriately based on the time of the day due to this changed script. Similar to the Code Example 1, the script will ask the user to input their name. However, in this example, the script also determines the current hour and assigns a time-based greeting (“Good morning,” “Good afternoon”, or “Good evening”) based on the time of the day. The script displays the proper greeting and the user’s name once the user inputs their name and pushes “Enter”. In order to give the user the time to study the output until the Command Prompt window closes, the script will halt its execution.

Error Handling

Adding error handling to our interactive batch scripts is essential. Let’s enhance our script by checking if the user entered a name. Modify the script as follows:

@echo off

setlocal enabledelayedexpansion

:: Get the current hour

for /f "tokens=1,2 delims=:" %%a in ('time ^| find "current"') do (

  set /a "hour=%%a"

)

:: Determine the greeting based on the time of day

if !hour! geq 0 if !hour! lss 12 (

  set greeting=Good morning

) else if !hour! geq 12 if !hour! lss 17 (
 
  set greeting=Good afternoon

) else (

  set greeting=Good evening

)

  set /p name=Enter your name:

:: Check if a name was entered

if "!name!"=="" (

  echo You didn't enter a name.

) else (

  echo !greeting!, !name%!

)

Pause

Save the file and run it. This time, if we press “Enter” without entering a name, it displays an error message. The script asks the user to provide their name, just like in the other examples. It also determines the current hour and assigns a time-based greeting. However, in this example, it includes error handling. If the user doesn’t enter a name and simply presses “Enter”, the script displays the “You didn’t enter a name” error message. If the user does enter a name, it displays the appropriate greeting along with the user’s name, as shown in the previous example.

Creating interactive batch scripts allows us to engage with users, collect input, and provide customized responses based on their input and system conditions. This guide demonstrated the basics of batch scripting, creating interactive scripts, adding conditional logic, and error handling. With these skills, we can develop more sophisticated batch scripts to automate the tasks efficiently and interactively on our Windows system.

Conclusion

In conclusion, this comprehensive guide elaborated the process of creating interactive batch scripts in a user-friendly and accessible manner. We learned the necessary steps from the foundational understanding of batch files and the Command Prompt, progressing to hands-on script creation. By running a simple “greet” script and enhancing it with conditional logic and error handling, we displayed the potential for customization and adaptability in batch scripting. Batch scripting is a powerful tool. With practice, we can utilize its capabilities to smoothen out our computing experience.

About the author

Kalsoom Bibi

Hello, I am a freelance writer and usually write for Linux and other technology related content