Archive
Archive for November, 2009
source:http://www.dostips.com/DtTipsStringManipulation.php#Snippets.MidString
|
Align Right |
Align text to the right i.e. to improve readability of number columns. |
Left String |
Extract characters from the beginning of a string. |
Map and Lookup |
Use Key-Value pair list to lookup and translate values. |
Mid String |
Extract a Substring by Position. |
Remove |
Remove a substring using string substitution. |
Remove both Ends |
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 |
Trim spaces from the beginning of a string via “FOR” command. |
Trim Quotes |
Remove surrounding quotes via FOR command. |
Trim Right |
Trim spaces from the end of a string via substitution. |
Trim Right |
Trim spaces from the end of a string via “FOR” command. |
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: |
Script Ouput |
X= 3000
Y= 2
|
|
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: |
Script Ouput |
politic
poli
|
|
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: |
Script Ouput |
05
Sunday
|
|
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: |
Script Ouput |
Date : Sat 03/11/2006
Weekday: Sat
Month : 03
Day : 11
Year : 2006
|
|
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: |
Script Ouput |
the cat in the hat
cat in hat
|
|
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: |
Script Ouput |
politic
oliti
|
|
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: |
Script Ouput |
" word "
"word"
|
|
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: |
Script Ouput |
teh cat in teh hat
the cat in the hat
|
|
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: |
Script Ouput |
politic
itic
|
|
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: |
Script Ouput |
-- 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
|
|
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: |
Script Ouput |
HelloWorld
Hello World
Hello DOS World
|
|
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: |
Script Ouput |
" 15 Leading spaces to truncate"
"15 Leading spaces to truncate"
|
|
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: |
Script Ouput |
"cmd politic"
cmd politic
|
|
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 Expansionis 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: |
Script Ouput |
"15 Trailing Spaces to truncate "
"15 Trailing Spaces to truncate"
|
|
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: |
Script Ouput |
"15 Trailing Spaces to truncate "
"15 Trailing Spaces to truncate"
|
|