I'm automating some source control software functionality using a dot bat script but given that our svn repos are hosted in a *NIX box, I'm facing the eternal case problem between these two worlds.
Is there any cmd.exe function to convert the value of the Windows system variable %USERNAME% to lower case?
Thanks much in advance!
-
a quick google found this...
@echo off goto :end_remarks ************************************************************************************* * * * authored:Sam Wofford * Returns lowercase of a string * 12:13 PM 11/13/02 ************************************************************************************** :end_remarks setlocal set errorlevel=-1 if {%1}=={} echo NO ARG GIVEN&call :Help &goto :endit if {%1}=={/?} call :Help &goto :endit call :set_LCASE_array a b c d e f g h i j k l m n o p q r s t u v w x y z :start set input=%1 set input=%input:"=% set totparams=0 call :COUNT_PARAMS %input% call :MAKE_LOWERCASE %input% set errorlevel= echo %convertedstring% endlocal goto :eof :endit echo %errorlevel% endlocal goto :eof :MAKE_LOWERCASE :nextstring if {%1}=={} goto :eof set string=%1 set /a params+=1 set STRINGCONVERTED= set pos=0 :NEXT_CHAR set onechar=%%string^:^~%pos%,1%% for /f "tokens=1,2 delims==" %%a in ('set onechar') do for /f %%c in ('echo %%b') do call :checkit %%c if not defined STRINGCONVERTED goto :NEXT_CHAR shift /1 if %params% LSS %totparams% set convertedstring=%convertedstring% &:add one space,but not at end goto :nextstring goto :eof :Help echo USAGE:%~n0 string OR %~n0 "with spaces" echo function returns the lowercase of the string or -1 (error) echo strings with embedded spaces needs to be in quotes Ex. "lower case" echo in a batch NTscript "for /f %%%%A in ('lcase STRING') do set var=%%%%A" set errorlevel= goto :eof :checkit set LCFOUND= if /i {%1}=={echo} set STRINGCONVERTED=Y&goto :eof set char=%1 for /f "tokens=2 delims=_=" %%A in ('set LCASE_') do call :findit %%A %char% :skipit if defined LCFOUND (set convertedstring=%convertedstring%%ucletter%) else (set convertedstring=%convertedstring%%char%) set /a pos+=1 goto :eof :set_LCASE_array :setit if {%1}=={} goto :eof set LCASE_%1_=%1 SHIFT /1 goto :setit :findit if defined LCFOUND goto :eof set ucletter=%1 set lcchar=%2 if /i {%ucletter%}=={%lcchar%} set LCFOUND=yes goto :eof :COUNT_PARAMS :COUNTPARAMS if {%1}=={} goto :eof set /a totparams+=1 shift /1 goto :COUNTPARAMSadd that as a file (lowercase.cmd) to your path and you should be able to call it as "Lowercase.cmd %Username%", you could pipe it into another command if needed.
Greg D : Ew. Thanks for reminding me why I'm trying to sell PowerShell as the windows scripting solution at my org.Mauro : LOL...I haven't used command line for a looooong time, all my programming is now javascript, asp.net, c# and sql. -
download some unix utilities for DOS from http://short.stop.home.att.net/freesoft/unix.htm and use tr.exe (translate characters)
echo %USERNAME% | tr "[A-Z]" "[a-z]"
I also use a DOS extended cmd replacement named 4NT which has a built in command @lower
echo %@lower[%USERNAME%]
Nano Taboada : Thanks much for your comment. I've thought about that approach but that would imply having to install that tools in each user's box, I was interested in solving the problem with existing Windows tools.
0 comments:
Post a Comment