使用户输入的第一个字母成为批处理脚本中的大写字母

Ato*_*mix 1 title-case batch-file

这是我用来为新客户端创建文件夹的批处理脚本:

@ECHO OFF
SET /p clientLast=Enter Client's Last Name: 
SET /p clientFirst=Enter Client's First Name:  
ECHO Making Folders...
MKDIR "%clientLast%, %clientFirst%"
MKDIR "%clientLast%, %clientFirst%"\Budget
MKDIR "%clientLast%, %clientFirst%"\"Business Registration"
MKDIR "%clientLast%, %clientFirst%"\Correspondence
MKDIR "%clientLast%, %clientFirst%"\"Financial Info"
MKDIR "%clientLast%, %clientFirst%"\Forms
MKDIR "%clientLast%, %clientFirst%"\Illustrations
MKDIR "%clientLast%, %clientFirst%"\"Loans & Investments"
MKDIR "%clientLast%, %clientFirst%"\"Personal Info"
MKDIR "%clientLast%, %clientFirst%"\Recommendations
MKDIR "%clientLast%, %clientFirst%"\"Tax Misc"
TREE "%clientLast%, %clientFirst%"
ECHO DONE~~~~~~~~~~~~~~~
PAUSE
Run Code Online (Sandbox Code Playgroud)

我希望能够添加自动大写每个单词的第一个字母的能力.

我找到了一种方法来做到这一点,用它的首都替换每个字母前面的空格,看起来像这样:

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 CALL SET "%1=%%%1:%%~i%%"
Run Code Online (Sandbox Code Playgroud)

但这并没有把第一个词大写......

有任何想法吗?

jeb*_*jeb 7

或者用纯批次......

@echo off
setlocal EnableDelayedExpansion
call :FirstUp result hello
echo !result!

call :FirstUp result abc
echo !result!

call :FirstUp result zynx
echo !result!
goto :eof

:FirstUp
setlocal EnableDelayedExpansion
set "temp=%~2"
set "helper=##AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ"
set "first=!helper:*%temp:~0,1%=!"
set "first=!first:~0,1!"
if "!first!"=="#" set "first=!temp:~0,1!"
set "temp=!first!!temp:~1!"
(
    endlocal
    set "result=%temp%"
    goto :eof
)
Run Code Online (Sandbox Code Playgroud)

函数:FirstUp使用在%var:*x =%语法中搜索辅助字符串中第一个字符的技巧.

这会在第一次出现之前删除所有字符(因此我将所有字符加倍)所以,首先你得到"vox","VWWXXYYZZ"这个词,然后我只需要第一个字符%%%来获得资本并附加没有第一个字符后的原始字符串的其余部分.