Since automation programs like AutoHotKey exist, many people have never written or taken the time to understand bat files, and many don’t even know what they do.
In
this article, I’m going to show you how to write a simple batch file
and present some basics that a user will need to understand when writing
one. I’ll also provide you with a few resources for learning to write
batch (.bat) files in case you’d like to go further.
Let’s say that you frequently have network issues; you’re constantly getting on the command prompt and typing in things like “ipconfig” and pinging Google to see what the problem is. After a while you realize that it would be a bit more efficient if you just wrote a simple BAT file, stuck it on your USB stick, and used it on the machines you troubleshoot.
Step 1: Create A BAT File
Create a new text document on your desktop. Double click the file – it should be blank inside. Now, go to file>save as, and in the “Save As” window, input a name for your BAT file and then add a “.bat” on the end (without the quotes). My file was named testBAT.bat, for instance.
Before hitting save we need make sure that Windows doesn’t stick the standard “.txt” ending on the end of our new file. To do this, change the filetype from “.txt” to “all files” as shown in the screenshot below. That’s it – hit save and close the file.
Step 2: Learn Some Quick Code
If
you know how to run commands in the command prompt, you’ll be a wiz at
creating BAT files because it’s the same language. All you’re doing is
telling the command prompt what you want to put in through a file,
rather than typing it every time you run the command prompt. This saves
you time and effort; but it also allows you to put in some logic (like
simple loops, conditional statements, etc. that procedural programming
is capable of conceptually).
There are SEVEN simple commands I
want to familiarize you with for this program. Commands are NOT case
sensitive, so don’t worry about that.
TITLE - The Window name for the BAT file.
ECHO -
the “print” statement for BAT files. Anything following the word ECHO
will be displayed in the command prompt as text, on its own line.
ECHO OFF
– BAT writers typically put this at the beginning of their files. It
means that the program won’t show the command that you told it to run
while it’s running – it’ll just run the command. I’d recommend that
after you run this test program, you try removing this line from your
code to see what happens.
PAUSE - This outputs the “press any key to continue…”
message that you’ve seen all too many times. It’s helpful because it
pauses the BAT file execution until the user tells it to go again. If
you don’t put this in your program, everything will speed by and end
before you can see it. People typically put this in BAT files to give
the user a chance to review the material on the screen before
continuing.
CLS - Clears the DOS window (helpful if things get too cluttered!).
IPCONFIG – Outputs a lot of network information into your DOS box (network admins have dreams solely based off this command).
PING -
Pings an IP, letting you know if your computer was able to contact it.
This command also returns the latency (ping time) and by default pings
three times.
Step 3: Do Some Quick Logic
We need to plan
our program out. Any good programmer will think about the general
framework of their program before they dash into things – it prevents
them from making logic mistakes that are hard to back out of.
For this program, we want to check the computer’s network/internet settings with an “ipconfig /all”
command, and then review that information by giving the user time to
read everything. Afterwards, we want to ping google.com to figure out if
we really truly have access to the internet. We’ll pause the program
after this as well, because we want to know for sure that they saw it.
OK. Very simple program, very simple logic. Let’s write some code.
Step 4: Write Your BAT File
Right click your BAT file and click “edit” to bring up Notepad. The whole document should be blank – ready for some epic programmer input.
Rather
than walking you line by line through the code (it’s extremely short)
I’m going to use a code comment (example– CODE ::Comment) to let you
know what we just did.I’m putting the actual code in bold to make things
a bit easier to process.
———–Start Code———–
ECHO OFF
::CMD will no longer show us what command it’s executing(cleaner)
ECHO As a network admin, I’m getting tired of having to type these commands in! Hopefully, this saves me some time in the long run.
:: Print some text
IPCONFIG /ALL
:: Outputs tons of network information into the command prompt
PAUSE
:: Lets the user read the important network information
PING www.google.com
:: Ping google to figure out if we’ve got internet!
ECHO All done pinging Google.
::Print some text
PAUSE
:: Give the user some time to see the results. Because this is our last line, the program will exit and the command window will close once this line finishes.
::CMD will no longer show us what command it’s executing(cleaner)
ECHO As a network admin, I’m getting tired of having to type these commands in! Hopefully, this saves me some time in the long run.
:: Print some text
IPCONFIG /ALL
:: Outputs tons of network information into the command prompt
PAUSE
:: Lets the user read the important network information
PING www.google.com
:: Ping google to figure out if we’ve got internet!
ECHO All done pinging Google.
::Print some text
PAUSE
:: Give the user some time to see the results. Because this is our last line, the program will exit and the command window will close once this line finishes.
———–End Code———–
Step 5: Run Your BAT File
Save
the file you just coded (or copy/paste mine in, it will run as
written), and double click it. Your output should be something like the
screenshot below.
Congratulations! You’ve written a batch file successfully.
If you want to learn more about bat files, I’d recommend you check out the commands available to the language. From there, your best bet is to write your own, or follow more examples online. Feel free to comment here if you have a BAT-related question.
The
most useful BAT I’ve made so far is one that allowed me to compile and
run Java programs with a single command, saving me countless amounts of
command typing in the long run (because I compile/run so often when
programming). I’ve also made one that sets file associations up the way I
want them when I plug in my flash drive to a PC – this makes it
possible for my portable apps to be the default app right from the
get-go with a new computer.
Have you written anything cool with BAT files before?