Consolidate Separate .cmd and .bat Files

A solution that lets you use just one version of common task scripts for a mixed workstation environment.

Readers

October 17, 2001

1 Min Read
ITPro Today logo

After reading Chris Taylor's article (Reader to Reader: "BAT vs. CMD," July 2001) about using .cmd files for Windows 2000 and Windows NT and .bat files for Windows 9x, I wanted to mention a more efficient way to accomplish the main task: protecting an OS from a program that wasn't designed for the OS. Having separate .cmd and .bat files, as Chris suggests, creates version-control problems and necessitates extra work when you make script changes. A better solution is to create separate sections in the script file (i.e., a section for Win2K and NT machines and a section for Win9x machines). To create these sections, you need to test for the environment variable OS. This variable is on Win2K and NT systems and has the value Windows_NT. The following script tests for the OS variable.

IF "%OS%"

"Windows_NT" GOTO Win2KNTREM GOTO Common:Win2KNTREM :CommonREM

Because the OS variable doesn't exist on Win9x, you need to use the string value for the comparison operator test. Otherwise, you'll receive an error for the nonexistent variable.

If you also need separate commands for Win2K and NT machines, use the following code in the Win2KNT section:

FOR /F "tokens=1" %%I in ('ver') DO set OSVer=%%IIF %OSVer%Windows GOTO NT4REM GOTO Common:NT4REM 

This code checks the Ver command's output, which is different for each OS (i.e., Microsoft Windows 2000 on Win2K and Windows NT Version 4.0 on NT 4.0). My method is basic, and others might have more elaborate solutions. However, my solution lets you have just one version of common task scripts for a mixed workstation environment.

—Thomas Hazlett
[email protected]

Sign up for the ITPro Today newsletter
Stay on top of the IT universe with commentary, news analysis, how-to's, and tips delivered to your inbox daily.

You May Also Like