Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium


Arrays in Batch File

Posted on 2006-04-26
Medium Priority
Last Modified: 2012-05-05

In a typical DOS Batch file, can we have something like Arrays (like in other programming languages) so that we can read each of the element in the array, prepare a DOS command with this array and execute the same.

I would also like each of the DOS command being executed to wait for the executing command to exit before proceeding to issue the next command.

I can do this in C# but in DOS Batch file I am confused.
Question by:deepaknet
  • 2
LVL 97

Expert Comment

by:Lee W, MVP
ID: 16549964
DOS batch files are a series of programs executed in sequence.  There are some ways of throwing in variables and executing out of sequence, but thinking of DOS as a programming language would be a stretch.

You can do a lot with the for command - type for /? at a command prompt for more information on the for command.

It would help if you could give a specific example of what you are looking for.
LVL 15

Author Comment

ID: 16550044
Would then having a VBScript file and calling from CScript do the trick.

Basically, I would give you an example:

An array of Fruits like {Apple, Mango, Pomegranete, Banana}

Now I have to call an application like

FruitVendor.exe and pass each of the fruit one at a time. Additionally, while one instance of FruitVendor is running, the loop should wait for exit and then take the next one.

In C#, I can do this as

string[] strFruit = {"Apple", "Mango","Pomegranete", "Banana"};

Then I can use foreach to iterate through this and call Process.Start ("fruitvendor.exe") and pass each of the fruit with WaitForExit() enabled.

The problem is that this needs to be a batch file preferably instead of a compiled application.
LVL 97

Accepted Solution

Lee W, MVP earned 1000 total points
ID: 16550115
Ok, here's the thing - I know there's a way to do this as I worked on a question where we tried to parse drive letters like that, but the command that gave the drive letters worked strangely.  Unfortunately, I don't remember the EXACT "for" command syntax for it (I'll try to dig it up but I'e participated in a LOT of questions).

One way to do it is to create a text file - fruits.txt - so the text file is your array. In your example, the text file would have 4 lines, one fruit per line, NOTHING ELSE.

Then this for command would execute the command for each fruit.  The nature of a batch file won't allow it to run the next command until that one is done.  (Again, there are ways around this, but you WANT this behaviour).

FOR /F "tokens=*" %a IN (fruits.txt) DO yourcommand %a

For a demonstration, run this command:
FOR /F "tokens=*" %a IN (fruits.txt) DO @Echo my fruit is %a

NOTE: when using the for command in a batch file, you need to use %% instead of % - so BATCH FILE ONLY:
FOR /F "tokens=*" %%a IN (fruits.txt) DO @Echo my fruit is %%a

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If you build your web application in Visual Studio you'll get at least a few binaries, or .DLL, files in your bin folder. However, there is more compiling to be done. Normally this would happen when an ASP.NET resource within the web site is request…
Sometimes people don't understand why download speed shows differently for Windows than Linux.Specially, this article covers and shows the solution for throughput difference for Windows than a Linux machine. For this, I arranged a test scenario.I…
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…
Screencast - Getting to Know the Pipeline

571 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question