在Windows批处理文件中将变量的首字母大写

时间:2018-10-11 22:40:26

标签: regex batch-file sed

我正在尝试将%COMPUTERNAME%变量的输出的首字母大写。我尝试了以下无效的代码。

set host=%COMPUTERNAME%
echo %host% | sed 's/^\(.\)/\1\u\2/g/'

输出应为Beast,而不是BEASTbeast

4 个答案:

答案 0 :(得分:2)

我经常倾向于为此使用powershell命令:

:: Q:\Test\2018\10\12\SO_52769852.cmd
@Echo off
For /f %%A in ('
  Powershell -NoP -C "$Env:COMPUTERNAME.Substring(0,1).ToUpper()+$Env:COMPUTERNAME.Substring(1).ToLower()"
') do set host=%%A
Echo:%host%

答案 1 :(得分:1)

尝试一下:

@echo off
setlocal
set "f_leter=%COMPUTERNAME:~0,1%"
set "the_rest=%COMPUTERNAME:~1%"

call :UpCase %f_leter% f
call ::LoCase %the_rest% rest

set result=%f%%rest%
echo %result%

exit /b %errorlevel%
endlocal
::http://www.robvanderwoude.com/battech_convertcase.php
:LoCase
:: Subroutine to convert a variable VALUE to all lower case.
:: The argument for this subroutine is the variable NAME.
setlocal enableDelayedExpansion
set "var=%~1"
FOR %%i IN ("A=a" "B=b" "C=c" "D=d" "E=e" "F=f" "G=g" "H=h" "I=i" "J=j" "K=k" "L=l" "M=m" "N=n" "O=o" "P=p" "Q=q" "R=r" "S=s" "T=t" "U=u" "V=v" "W=w" "X=x" "Y=y" "Z=z") DO (
 SET "var=!var:%%~i!"
)
endlocal&(
    if "%~2" neq "" (
        set "%~2=%var%"
    ) else (
        echo %var%
    ) 
)&GOTO:EOF

:UpCase
setlocal enableDelayedExpansion
set "var=%~1"
:: Subroutine to convert a variable VALUE to all UPPER CASE.
:: The argument for this subroutine is the variable NAME.
FOR %%i IN ("a=A" "b=B" "c=C" "d=D" "e=E" "f=F" "g=G" "h=H" "i=I" "j=J" "k=K" "l=L" "m=M" "n=N" "o=O" "p=P" "q=Q" "r=R" "s=S" "t=T" "u=U" "v=V" "w=W" "x=X" "y=Y" "z=Z") DO (
    SET "var=!var:%%~i!"
)
endlocal&(
    if "%~2" neq "" (
        set "%~2=%var%"
    ) else (
        echo %var%
    ) 
)&GOTO:EOF

答案 2 :(得分:1)

这是sed的答案,尽管我建议在Windows上使用@LotPings powershell答案。请注意,对于典型的%computername%,问题的重点是将除第一个字符外的所有字符都转换为小写字母。

set host=%COMPUTERNAME%
echo %host% | sed -r 's/^(.)(.*)/\U\1\L\2/'

答案 3 :(得分:0)

除了使用SEd之外,您还可以使用内置的Find命令将其作为一行来完成。

@For /F "Tokens=2 Delims=:" %%A In ('"Find "" ":%ComputerName:~,1%" 2>&1"') Do @Echo %%A%ComputerName:~1%