Batch file 在批处理脚本中将用户输入的第一个字母设为大写

Batch file 在批处理脚本中将用户输入的第一个字母设为大写,batch-file,title-case,Batch File,Title Case,这是我用来为新客户端创建文件夹的批处理脚本: @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%, %

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

@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
我想能够添加自动大写每个单词的第一个字母的能力

我找到了一种方法,用大写字母替换每个字母前面的空格,看起来像:

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%%"
但这并没有大写第一个单词


有什么想法吗

我个人会将其改写为python或vbscript:

快速/粗略的vbscript概念代码,效率不高,但希望可读:

函数MakeDirectories(strRootFolder、strParentFolder、strArrayFolderNames)
出错时继续下一步
清楚
设置objFSO=CreateObject(“Scripting.FileSystemObject”)
strParentFolder=strRootFolder&“\”&strParentFolder
如果不是objFSO.FolderExists(strParentFolder),则
创建文件夹(strParentFolder)
如果结束
如果出错,那么
MakeDirectories=false
退出功能
如果结束
暗斯特尔内弗勒
对于StrarayFoldernames中的每个strfolderName
strNewFolder=strParentFolder&“\”和properName(strFolderName)
如果不是objFSO.FolderExists(strNewFolder),则
objFSO.CreateFolder(strNewFolder)
如果结束
下一个
如果出错,那么
MakeDirectories=false
其他的
MakeDirectories=True
如果结束
端函数
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
功能正确(strText)
正确=ucase(左(右文本,1))和lcase(中(右文本,2))
端函数
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
功能属性(strText)
如果instr(strText,“”)大于0,则
昏暗的温度,我
温度=拆分(strText,“”)
对于i=lbound(温度)至ubound(温度)
温度(i)=适当的(温度(i))
下一个
ProperNames=join(temp,“”)
其他的
ProperNames=正确(strText)
如果结束
端函数
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
次干管()
dim strLastName,strFirstName
strLastName=InputBox(“请输入客户的姓氏:”)
如果strLastName=“”,则退出sub
strFirstName=InputBox(“请输入客户的名字:”)
如果strLastName=“”,则退出sub
“”更好的选择可能是放置所需的文件夹
“”转换为文本文件,并让程序读取所述数据
暗斜纹花边(9)
strArrayFolderNames(0)=“预算”
strArrayFolderNames(1)=“商业登记”
strArrayFolderNames(2)=“通信”
strArrayFolderNames(3)=“财务信息”
strArrayFolderNames(4)=“表格”
strArrayFolderNames(5)=“插图”
strArrayFolderNames(6)=“贷款与投资”
strArrayFolderNames(7)=“个人信息”
strArrayFolderNames(8)=“建议”
strArrayFolderNames(9)=“税务杂项”
dim strDelimeter、strRootFolder、strParentFolder
strDelimeter=“-”“”我建议避免使用“,”
strRootFolder=“C:\docs\temp”
strParentFolder=property(strLastName)和strDelimeter&property(strFirstName)
如果生成目录(strRootFolder、strParentFolder、strArrayFolderNames),则
wscript.echo(“所有文件夹都已创建”)
其他的
wscript.echo(“错误:未创建一个或多个文件夹。”)
如果结束
端接头
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
主要()
最后,我建议您不要在文件夹名称中使用逗号,这样可以省去管理员的痛苦


Michael。

我个人会将其改写为python或vbscript:

快速/粗略的vbscript概念代码,效率不高,但希望可读:

函数MakeDirectories(strRootFolder、strParentFolder、strArrayFolderNames)
出错时继续下一步
清楚
设置objFSO=CreateObject(“Scripting.FileSystemObject”)
strParentFolder=strRootFolder&“\”&strParentFolder
如果不是objFSO.FolderExists(strParentFolder),则
创建文件夹(strParentFolder)
如果结束
如果出错,那么
MakeDirectories=false
退出功能
如果结束
暗斯特尔内弗勒
对于StrarayFoldernames中的每个strfolderName
strNewFolder=strParentFolder&“\”和properName(strFolderName)
如果不是objFSO.FolderExists(strNewFolder),则
objFSO.CreateFolder(strNewFolder)
如果结束
下一个
如果出错,那么
MakeDirectories=false
其他的
MakeDirectories=True
如果结束
端函数
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
功能正确(strText)
正确=ucase(左(右文本,1))和lcase(中(右文本,2))
端函数
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
功能属性(strText)
如果instr(strText,“”)大于0,则
昏暗的温度,我
温度=拆分(strText,“”)
对于i=lbound(温度)至ubound(温度)
温度(i)=适当的(温度(i))
下一个
ProperNames=join(temp,“”)
其他的
ProperNames=正确(strText)
如果结束
端函数
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
次干管()
dim strLastName,strFirstName
strLastName=InputBox(“请输入客户的姓氏:”)
如果strLastName=“”,则退出sub
strFirstName=InputBox(“请输入客户的名字:”)
如果strLastName=“”,则退出sub
“”更好的选择可能是放置所需的文件夹
“”转换为文本文件,并让程序读取所述数据
暗斜纹花边(9)
strArrayFolderNames(0)=“预算”
strArrayFolderNames(1)=“商业登记”
strArrayFolderNames(2)=“通信”
strArrayFolderNames(3)=“财务信息”
strArrayFolderNames(4)=“表格”
strArrayFolderNames(5)=“插图”
斯特拉尔
@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
)