这是我用来为新客户制作文件夹的批处理脚本:

@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%%"

但这不会大写第一个字...

有任何想法吗?

有帮助吗?

解决方案

或纯批次...

@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
)

函数:首先使用%var中的辅助字符串中的第一个字符的技巧:*x =%语法。

这会在第一次出现之前删除所有字符(因此我加倍所有字符),因此,首先,您获得了“ vox”,“ vwwxxyyzz”一词,然后我只是将第一个百分比的char首先获得,以获取资本并添加资本并附加原始字符串的其余部分没有第一个字符后。

其他提示

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

快速 /粗糙的VBScript概念代码,不是特别有效,但希望可以阅读:

Function MakeDirectories (strRootFolder, strParentFolder, strArrayFolderNames)

    on error resume next
    err.clear

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    strParentFolder = strRootFolder & "\" & strParentFolder

    if not objFSO.FolderExists(strParentFolder) then
        objFSO.CreateFolder(strParentFolder)
    end if

    if err.number then
        MakeDirectories = false    
        exit function
    end if

    dim strNewFolder

    for each strfolderName in strArrayFolderNames
        strNewFolder = strParentFolder & "\" & ProperNames(strFolderName)
        if not objFSO.FolderExists(strNewFolder) then
            objFSO.CreateFolder(strNewFolder)
        end if
    next

    if err.number then
        MakeDirectories = false    
    else    
        MakeDirectories = True
    end if

End function

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

function Proper ( strText )

    Proper = ucase(left(strText,1)) & lcase(mid(strText,2))

end function    

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function ProperNames ( strText )

    if instr(strText," ") > 0 then
        dim temp, i
        temp = split(strText, " ")
        for i = lbound(temp) to ubound(temp)
            temp(i) = Proper(temp(i))
        next    
        ProperNames = join(temp, " ")
    else
        ProperNames = Proper(strText)
    end if    

End Function    

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub Main ( )

    dim strLastName, strFirstName

    strLastName = InputBox("Please enter the client's last name:")
    if strLastName = "" then exit sub

    strFirstName = InputBox("Please enter the client's first name:")
    if strLastName = "" then exit sub

    ''  a better alternative might be to put the desired folder 
    ''  into a text file and have the program read said data
    dim strArrayFolderNames(9)
    strArrayFolderNames(0) = "Budget"
    strArrayFolderNames(1) = "Business Registration"
    strArrayFolderNames(2) = "Correspondence"
    strArrayFolderNames(3) = "Financial Info"
    strArrayFolderNames(4) = "Forms"
    strArrayFolderNames(5) = "Illustrations"
    strArrayFolderNames(6) = "Loans & Investments"
    strArrayFolderNames(7) = "Personal Info"
    strArrayFolderNames(8) = "Recommendations"
    strArrayFolderNames(9) = "Tax Misc"

    dim strDelimeter, strRootFolder, strParentFolder

    strDelimeter     = "-" '' I suggest avoiding the use of ","
    strRootFolder    = "C:\docs\temp"
    strParentFolder  = Proper(strLastName) & strDelimeter & Proper(strFirstName)

    If MakeDirectories(strRootFolder, strParentFolder, strArrayFolderNames) then
        wscript.echo ("Folders all made.")
    else
        wscript.echo ("Error: one or more folders was not created.")
    end if

End Sub

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Main ()

最后,我建议你 使用以文件夹名称的逗号,它将为您节省您的管理障碍。

迈克尔。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top