How to split a string by spaces in a Windows batch file?

batch file split string by character
batch split string by slash
batch split string by comma
batch split string by equal sign
batch split string into variables
batch file substring
batch trim string
batch file if variable contains string

Suppose I have a string "AAA BBB CCC DDD EEE FFF".

How can I split the string and retrieve the nth substring, in a batch file?

The equivalent in C# would be


see HELP FOR and see the examples

or quick try this

 for /F %%a in ("AAA BBB CCC DDD EEE FFF") do echo %%c

Split string with string as delimiter · windows batch-file cmd split. I'm trying to split a string in a batch file using a string (rather  I'm trying to take a string (output of a command) and split it on commas, then use each value to SET, e.g. String: USER=Andy,IP=,HOSTNAME=foobar,PORT=1234. So I want to split on comma and then literally use that variable in SET. I don't know ahead of time how many many variables there will be. I've tried things like:

Three possible solutions to iterate through the words of the string:

Version 1:

@echo off & setlocal
for %%a in (%s%) do echo %%a

Version 2:

@echo off & setlocal
set t=%s%
for /f "tokens=1*" %%a in ("%t%") do (
   echo %%a
   set t=%%b
if defined t goto :loop

Version 3:

@echo off & setlocal
call :sub1 %s%
exit /b
if "%1"=="" exit /b
echo %1
goto :sub1

Version 1 does not work when the string contains wildcard characters like '*' or '?'.

Versions 1 and 3 treat characters like '=', ';' or ',' as word separators. These characters have the same effect as the space character.

Basically, your string will be split into tokens using the underscore as a delimiter (delims=_). Only the second one (tokens=2) will be passed (as variable %%a) to the for loop. The loop will only run once since you are dealing with a single string in this case. Split string by delimiter in String manipulation of MS-DOS Commands. Here in this example , (comma) is the delimiter in a string. It is assigned on the variable. Using FOR IN.. ms dos batch file command to get multiple splited values using %%a,%%b,%%c and %%d.

This is the only code that worked for me:

for /f "tokens=4" %%G IN ("aaa bbb ccc ddd eee fff") DO echo %%G 



How to split string by delimiter in ms dos batch script file. Here in this example , (​comma) is the delimiter in a string. It is assigned on the variable. Using FOR IN.. The equivalent in C# would be. "AAA BBB CCC DDD EEE FFF".Split () [n] windows batch-file split. improve this question. edited Feb 1 '18 at 9:11. 27 silver badges. 66 bronze badges. asked Nov 10 '09 at 10:47. 421 silver badges. 651 bronze badges. active oldest votes. see HELP FOR and see the examples. or quick try this.

The following code will split a string with an arbitrary number of substrings:

@echo off

REM Set a string with an arbitrary number of substrings separated by semi colons
set teststring=The;rain;in;spain

REM Do something with each substring
    REM Stop when the string is empty
    if "!teststring!" EQU "" goto END

    for /f "delims=;" %%a in ("!teststring!") do set substring=%%a

        REM Do something with the substring - 
        REM we just echo it for the purposes of demo
        echo !substring!

REM Now strip off the leading substring
    set stripchar=!teststring:~0,1!
    set teststring=!teststring:~1!

    if "!teststring!" EQU "" goto stringloop

    if "!stripchar!" NEQ ";" goto striploop

    goto stringloop


Description: Use the FOR command to split a string into parts. echo.-- Split the date into weekday, month, day, and year, using slash and space as delimiters Remove the first and the last character of a string. Remove Spaces: Remove all spaces in a string via substitution. Replace: Replace a substring using string substitution. Right String: Extract characters from the end of a string. Split String: Split a String, Extract Substrings by Delimiters. String Concatenation: Add one string to another string. Trim Left


batch file:

FOR %%A IN (1 2 3) DO ECHO %%A

command line:

FOR %A IN (1 2 3) DO ECHO %A



splitstring.bat @echo off. REM YOU NEED THIS setlocal enabledelayedexpansion. REM If the passed parameter string has any spaces you  This is used to remove the first and the last character of a string. 12: Remove All Spaces. This is used to remove all spaces in a string via substitution. 13: Replace a String. To replace a substring with another string use the string substitution feature. 14: Right String. This is used to extract characters from the end of a string.

Loop command: against a set of files - conditionally perform a command IN ("​Text string to process") DO command Key options: delims=xxx The delimiter By default, /F breaks up the line at each blank space " ", and any blank lines are A single FOR /F command can never parse more than 31 tokens, to use more  Below is an example of a windows script (batch) that replaces file names with spaces to underscores. (For example: "file name.txt" will be changed to "file_name.txt") The script recursively goes through the directories and makes adjustments.

PowerShell is a command-line language provided by Microsoft. It is the replacement of the Windows batch scripting tool known as DOS. For example, we want to split the following string into an array of multiple words by  4 Apps of mine run a batch file that -tries- to call/start and EXE program. These Batch files need to work with OS XP thru Win 10. Win 10 has a pop-up window asking user if its okay to run/execute my EXE. No other Win version does this and thus I

If you type in ver, you will get the version string at windows command line prompt. For each document the batch process will output a separate text file with the text contents of How to extract text before/after space or comma only in Excel?

  • Thanks, this definitely works. I was hoping to be able to parameterize it, so I could get the nth string, not ... the 3rd string (%%c). or the 4th string (%%d).
  • Note that this also breaks at '=' (and possibly others as well)
  • either I'm doing something wrong or this doesn't work anymore. For me it just outputs "%c"
  • For me it didn't work until I added "tokens=1,2" after /F, or only the first variable was set (%%a).
  • Looks like doesn't work on Windows 10. Maybe that should be added to the reply.
  • Version 1 also works for comma-separated lists, e.g. ABC,DEF,GHI,JKL
  • Great! Used set /p s=<StringInFile.txt to get the string out of file then set t=%s%
  • Version 2 is the best for (most) arbitrary delimiter characters.
  • In Version 2: what exactly is set t=%%bdoing? Where does it come from? Sorry I don't get it. Would please explain? Thank you.
  • @snahl In version 2,%%b contains the remaining words. set t=%%b removes the first word from the variable t. The "for" loop is only executed once per pass, because the /f parameter is specified and ("%t%") is only a single line of text. The "goto :loop" is the actual loop that is executed once per word.
  • This should definitely be the accepted answer. Without /f "tokens.., it doesn't work on Windows 10.
  • This was just what I needed for extracting major and minor versions from a version string in a post build. Thanks!
  • But this doesn't fit to the question
  • Your answer has nothing to do with the question
  • the path variable is a joint string. splitting it up is done in the example. and a small operation is added that will demonstrate to everyone how real work can be done insided the parsing loop. this work example shows an "exit-on-first-hit" reaction.