Error DataBase-One Place all Solutions Forums Blog Glossary    Contact Us
Search  
   
Browse by Category
Error DataBase-One Place all Solutions .: Operating Systems .: Windows Operating Systems .: MS DOS .: How to Loop command: against the results of another command. using FOR /F command

How to Loop command: against the results of another command. using FOR /F command

Loop command: against the results of another command.

Syntax
      FOR /F ["options"] %%parameter IN ('command_to_process') DO command

Key
   options:
           delims=xxx  - The delimiter character(s)
                         (default = a space)
           skip=n      - A number of lines to skip at the beginning. 
                         (default = 0)

eol=; - character to indicate a comment (end of line)
tokens=n - specifies which numbered items to read from each line (default = 1) usebackq - under Windows 2000 (and greater) the usebackq option specifies that an alternative set of FOR command delimiters are to be used: - a `command_to_process` is placed in BACK quotes instead of 'straight' quotes (see the FOR /F filename syntax for more) command_to_process : The output of the 'command_to_process' is passed into the FOR parameter. command : The command to carry out, including any command-line parameters. %%parameter : A replaceable parameter: in a batch file use %%G (on the command line %G)

FOR /F processing of a command consists of reading the output from the command one line at a time and then breaking the line up into individual items of data or 'tokens'. The DO command is then executed with the parameter(s) set to the token(s) found.

By default, /F breaks up the command output at each blank space, and any blank lines are skipped.
You can override this default parsing behavior by specifying the "options" parameter. The options must be contained within "quotes"

Tokens
tokens=2,4,6 will cause the second, fourth and sixth items on each line to be processed

tokens=2-6 will cause the second, third, fourth, fifth and sixth items on each line to be processed

tokens=* will cause all items on each line to be processed

tokens=3* will cause the 3rd and all subsequent items on each line to be processed

Each token specified will cause a corresponding parameter letter to be allocated.

If the last character in the tokens= string is an asterisk, then additional parameters are allocated for all the remaining text on the line.

Delims
More than one delimiter may be specified so a string like 'abcd+efg+hijk+lmno;pqr;stu+vwzyz' can be broken up using "delims=;+".

You can use any character as a delimiter, but they are case sensitive.
If you don't specify delims it will default to "delims=<tab><space>"

Notice that some text editors will enter the TAB character as a series of spaces, specifying more than one delimiter has been known to cause problems with some data sets.

Examples:

To ECHO from the command line, the name of every environment variable.

   FOR /F "delims==" %G IN ('SET') DO @Echo %G

The same command with usebackq (Windows 2000 and above)

   FOR /F "usebackq delims==" %G IN (`SET`) DO @Echo %G

To put the Windows Version into an environment variable

   @echo off 
   ::parse the VER command 
   FOR /F "tokens=4*" %%G IN ('ver') DO SET _version=%%G 
   :: show the result 
   echo %_version%

List all the text files in a folder

   FOR /F "tokens=*" %%G IN ('dir /b C:\docs\*.txt') DO echo %%G

   FOR /F "tokens=*" %%G IN ('dir/b ^"c:\program files\*.txt^"') DO echo %%G

In the example above the long filename has to be surrounded in "quotes"
these quotes have to be escaped using ^
The "tokens=*" has been added to match all parts of any long filenames returned by the DIR command.

Although the above is a trivial example, being able to set %%G equal to each long filename in turn could allow much more complex processing to be done.


How helpful was this article to you?

Related Articles

article How to use Loop command: against a set of files using FOR/F command
Loop command: against a set of files -...

(No rating)  3-9-2008    Views: 157   
article How to use command line parameters with the Ntbackup command in Windows Server 2003
SUMMARY You can perform backup...

(No rating)  5-22-2008    Views: 197   
article How to Conditionally perform a command several times. using FOR command
Conditionally perform a command several...

(No rating)  3-9-2008    Views: 156   

User Comments

Add Comment
No comments have been posted.