quarta-feira, 17 de fevereiro de 2016

DOS String Manipulation

Font: http://www.dostips.com/DtTipsStringManipulation.php

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


Align text to the right i.e. to improve readability of number columns.
Extract characters from the beginning of a string.
Use Key-Value pair list to lookup and translate values.
Extract a Substring by Position.
Remove a substring using string substitution.
Remove the first and the last character of a string.
Remove all spaces in a string via substitution.
Replace a substring using string substitution.
Extract characters from the end of a string.
Split a String, Extract Substrings by Delimiters.
Add one string to another string.
Trim spaces from the beginning of a string via "FOR" command.
Remove surrounding quotes via FOR command.
Trim spaces from the end of a string via "FOR" command.
Trim spaces from the end of a string via substitution.



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.
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.
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"

Nenhum comentário :

Postar um comentário

Related Posts Plugin for WordPress, Blogger...