|
![]() |
| String Replacement |
Environment variable substitution allows for string (or character)
conversion, the syntax is pretty simple, type this from a command line:
echo PATHX: %PATH:c:=X:%
If you tried the above you would have seen that the contents of the "PATH" environment variable was echoed but with all "C:" strings replaced with "X:" (case insensitive match).
Note that there is a bug in this area, it will fail (badly) if the environment variable doesn't exist. For this reason I recommend adding and then stripping a character to the start of end of the environment variable or using the "if defined" syntax to only expand once you know it exists...
The "Get File Safe Dates and Times" tip uses character replacement to replace "/" and ":" characters and here is another example:
set String=123456789 set Changed=%String:2=*% set Changed=%Changed:3=% echo Original string was "%String%", was changed to "%Changed%" echo DATE-SAFE "%date:/=-%" (date env var with "/" replaced by "-") echo TIME-SAFE "%time::=_%" (time env var with ":" replaced by "_")
| Handling "empty" Strings |
The following example demonstrates converting a string (in this case one double quote character) to an empty string "". The 3 steps are (a) Get value ensuring non-empty (b) Convert any double quotes (problematic in "if" statements) to empty strings. (c) Strip (SUBSTRING) off the leading character added in step "a".
set MMQ=!%1 set MMQ=%MMQ:"=% set MMQ=%MMQ:~1%
| ToLowerCase.CMD - Case Conversion |
Substitution is case sensitive, this is one of the reasons you may wish to convert a string to all lower or all upper case first, this simple batch file shows how to convert to lower case:
@echo off
cls
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set SomeString=TheRainInSpain
echo SomeString(BEF) = %SomeString%
call :ToLowerCase "SomeString"
echo SomeString(AFT) = %SomeString%
goto :EOF
@rem +++++++++++++++++++++++++++++++++++
:ToLowerCase
@rem +++++++++++++++++++++++++++++++++++
set TLC_NAME=%~1
set TLC_VALUE=!%TLC_NAME%!
if "%TLC_VALUE%" == "" goto :EOF
set TLC_VALUE=%TLC_VALUE:A=a%
set TLC_VALUE=%TLC_VALUE:B=b%
set TLC_VALUE=%TLC_VALUE:C=c%
set TLC_VALUE=%TLC_VALUE:D=d%
set TLC_VALUE=%TLC_VALUE:E=e%
set TLC_VALUE=%TLC_VALUE:F=f%
set TLC_VALUE=%TLC_VALUE:G=g%
set TLC_VALUE=%TLC_VALUE:H=h%
set TLC_VALUE=%TLC_VALUE:I=i%
set TLC_VALUE=%TLC_VALUE:J=j%
set TLC_VALUE=%TLC_VALUE:K=k%
set TLC_VALUE=%TLC_VALUE:L=l%
set TLC_VALUE=%TLC_VALUE:M=m%
set TLC_VALUE=%TLC_VALUE:N=n%
set TLC_VALUE=%TLC_VALUE:O=o%
set TLC_VALUE=%TLC_VALUE:P=p%
set TLC_VALUE=%TLC_VALUE:Q=q%
set TLC_VALUE=%TLC_VALUE:R=r%
set TLC_VALUE=%TLC_VALUE:S=s%
set TLC_VALUE=%TLC_VALUE:T=t%
set TLC_VALUE=%TLC_VALUE:U=u%
set TLC_VALUE=%TLC_VALUE:V=v%
set TLC_VALUE=%TLC_VALUE:W=w%
set TLC_VALUE=%TLC_VALUE:X=x%
set TLC_VALUE=%TLC_VALUE:Y=y%
set TLC_VALUE=%TLC_VALUE:Z=z%
set %TLC_NAME%=%TLC_VALUE%
goto :EOF
![]() | ![]() |