DOS - String Manipulation

Basic string manipulation in batch like you are used to from other programming languages.



TOP
2008-01-01

Align Right - Align text to the right i.e. to improve readability of number columns

Description: Add leading spaces to a string to make sure the output lines up. I.e. for variables no longer than 8 characters add 8 spaces at the front and then show only the last 8 characters of the variable.
Script:
1.
2.
3.
4.
5.
6.
set�x=3000
set�y=2
set�x=��������%x%
set�y=��������%y%
echo.X=%x:~-8%
echo.Y=%y:~-8%
Script Output:
DOS�Script Output
X=    3000
Y=       2

TOP
2008-01-01

Left String - Extract characters from the beginning of a string

Description: Similar to the Left function in VB a batch script can return a specified number of characters from the left side of a string by specifying a substring for an expansion given a position of 0 and a length using :~ while expanding a variable content. The example shows how to return the first 4 characters of a string.
Script:
1.
2.
3.
4.
set�str=politic
echo.%str%
set�str=%str:~0,4%
echo.%str%
Script Output:
DOS�Script Output
politic
poli

TOP
2008-01-01

Map and Lookup - Use Key-Value pair list to lookup and translate values

Description: This example shows an approach to map a name of a month into it`s corresponding two digit number. The key-value pairs are listed in the map variable separated by semicolon. Key and value itself are separated by one dash character. Same can be used to tranlate a day-of-the-week short string into a day-of-the-week long string by changing the map content only.
Script:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
REM�----�Example�1:�Translate�name�of�month�into�two�digit�number�----
SET�v=Mai

SET�map=Jan-01;Feb-02;Mar-03;Apr-04;Mai-05;Jun-06;Jul-07;Aug-08;Sep-09;Oct-10;Nov-11;Dec-12
CALL�SET�v=%%map:*%v%-=%%
SET�v=%v:;=&rem.%

ECHO.%v%


REM�----�Example�2:�Translate�abbreviation�into�full�string�----
SET�v=sun

set�map=mon-Monday;tue-Tuesday;wed-Wednesday;thu-Thursday;fri-Friday;sat-Saturday;sun-Sunday
CALL�SET�v=%%map:*%v%-=%%
SET�v=%v:;=&rem.%

��ECHO.%v%
Script Output:
DOS�Script Output
05
  Sunday

TOP
2008-01-01

Mid String - Extract a Substring by Position

Description: Similar to the Mid function in VB a batch script can return a specified number of characters from any position inside a string by specifying a substring for an expansion given a position and length using :~ while expanding a variable content. The example here shows how to extract the parts of a date.
Script:
1.
2.
3.
4.
5.
echo.Date���:�%date%
echo.Weekday:�%date:~0,3%
echo.Month��:�%date:~4,2%
echo.Day����:�%date:~7,2%
echo.Year���:�%date:~10,4%
Script Output:
DOS�Script Output
Date   : Sat 03/11/2006
Weekday: Sat
Month  : 03
Day    : 11
Year   : 2006

TOP
2008-01-01

Remove - Remove a substring using string substitution

Description: The string substitution feature can also be used to remove a substring from another string. The example shown here removes all occurrences of "the " from the string variable str.
Script:
1.
2.
3.
4.
set�str=the�cat�in�the�hat
echo.%str%
set�str=%str:the�=%
echo.%str%
Script Output:
DOS�Script Output
the cat in the hat
cat in hat

TOP
2008-01-01

Remove both Ends - Remove the first and the last character of a string

Description: Using :~1,-1 within a variable expansion will remove the first and last character of the string.
Script:
1.
2.
3.
4.
set�str=politic
echo.%str%
set�str=%str:~1,-1%
echo.%str%
Script Output:
DOS�Script Output
politic
oliti

TOP
2008-01-01

Remove Spaces - Remove all spaces in a string via substitution

Description: This script snippet can be used to remove all spaces from a string.
Script:
1.
2.
3.
4.
set�str=������word�������&rem
echo."%str%"
set�str=%str:�=%
echo."%str%"
Script Output:
DOS�Script Output
"      word       "
"word"

TOP
2008-01-01

Replace - Replace a substring using string substitution

Description: To replace a substring with another string use the string substitution feature. The example shown here replaces all occurrences "teh" misspellings with "the" in the string variable str.
Script:
1.
2.
3.
4.
set�str=teh�cat�in�teh�hat
echo.%str%
set�str=%str:teh=the%
echo.%str%
Script Output:
DOS�Script Output
teh cat in teh hat
the cat in the hat

TOP
2008-01-01

Right String - Extract characters from the end of a string

Description: Similar to the Right function in VB a batch script can return a specified number of characters from the right side of a string by specifying a substring for an expansion given a negative position using :~ while expanding a variable content. The example shows how to return the last 4 characters of a string.
Script:
1.
2.
3.
4.
set�str=politic
echo.%str%
set�str=%str:~-4%
echo.%str%
Script Output:
DOS�Script Output
politic
itic

TOP
2008-01-01

Split String - Split a String, Extract Substrings by Delimiters

Description: Use the FOR command to split a string into parts. The example shows how to split a date variable into its parts.
Script:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
echo.--�Split�off�the�first�date�token,�i.e.�day�of�the�week
for�/f�%%a�in�("%date%")�do�set�d=%%a
echo.Date���:�%date%
echo.d������:�%d%
echo.

echo.--�Split�the�date�into�weekday,�month,�day,�and�year,�using�slash�and�space�as�delimiters
for�/f�"tokens=1,2,3,4�delims=/�"�%%a�in�("%date%")�do�set�wday=%%a&set�month=%%b&set�day=%%c&set�year=%%d
echo.Weekday:�%wday%
echo.Month��:�%month%
echo.Day����:�%day%
echo.Year���:�%year%
Script Output:
DOS�Script Output
-- Split off the first date token, i.e. day of the week
Date   : Thu 12/02/2005
d      : Thu

-- Split the date into weekday, month, day, and year, using slash and space as delimiters
Weekday: Thu
Month  : 12
Day    : 02
Year   : 2005

TOP
2008-02-26

String Concatenation - Add one string to another string

Description: This example shows how to add two strings in DOS.
Script:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
set�"str1=Hello"
��set�"str2=World"

��set�"str3=%str1%%str2%"
��set�"str4=%str1%�%str2%"
��set�"str1=%str1%�DOS�%str2%"

��echo.%str3%
��echo.%str4%
��echo.%str1%
Script Output:
DOS�Script Output
HelloWorld
  Hello World
  Hello DOS World

TOP
2008-04-28

Trim Left - Trim spaces from the beginning of a string via "FOR" command

Description: Use the FOR command to trim spaces at the beginning of a variable. In this example the variable to be trimmed is str.
Script:
1.
2.
3.
4.
set�str=���������������15�Leading�spaces�to�truncate
echo."%str%"
for�/f�"tokens=*�delims=�"�%%a�in�("%str%")�do�set�str=%%a
echo."%str%"
Script Output:
DOS�Script Output
"               15 Leading spaces to truncate"
"15 Leading spaces to truncate"

TOP
2008-01-01

Trim Quotes - Remove surrounding quotes via FOR command

Description: The FOR command can be used to safely remove quotes surrounding a string. If the string does not have quotes then it will remain unchanged.
Script:
1.
2.
3.
4.
set�str="cmd�politic"
echo.%str%
for�/f�"useback�tokens=*"�%%a�in�('%str%')�do�set�str=%%~a
echo.%str%
Script Output:
DOS�Script Output
"cmd politic"
cmd politic

TOP
2008-01-01

Trim Right - Trim spaces from the end of a string via "FOR" command

Description: Trimming spaces at the end of a variable seems a little tricky. The following example shows how to use a FOR loop to trim up to 31 spaces from the end of a string. It assumes that Delayed Expansion is enabled.
Script:
1.
2.
3.
4.
set�str=15�Trailing�Spaces�to�truncate���������������&rem
echo."%str%"
for�/l�%%a�in�(1,1,31)�do�if�"!str:~-1!"=="�"�set�str=!str:~0,-1!
echo."%str%"
Script Output:
DOS�Script Output
"15 Trailing Spaces to truncate               "
"15 Trailing Spaces to truncate"

TOP
2008-01-01

Trim Right - Trim spaces from the end of a string via substitution

Description: Trimming spaces at the end of a variable seems a little tricky. The following example shows how to use the string substitution feature to trim up to 31 spaces from the end of a string. It assumes that the string to be trimmed never contains two hash "##" characters in a row.
Script:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
set�str=15�Trailing�Spaces�to�truncate���������������&rem
echo."%str%"
set�str=%str%##
set�str=%str:����������������##=##%
set�str=%str:��������##=##%
set�str=%str:����##=##%
set�str=%str:��##=##%
set�str=%str:�##=##%
set�str=%str:##=%
echo."%str%"
Script Output:
DOS�Script Output
"15 Trailing Spaces to truncate               "
"15 Trailing Spaces to truncate"


Ad: