将字母更改为cap并保留一个变量(如果其中包含多个单词)

时间:2013-11-27 17:29:20

标签: variables capitalization

我有一个批处理文件,它将变量转换为全部大写字母......问题是如果变量中有一个空格,那么输出就会被拆分。如果变量(foldername)中有空格,我该如何将它变换为全部大写?

@REM  This makes everything uppercase.
@ SETLOCAL ENABLEDELAYEDEXPANSION

@ SET _SAMPLE="%foldername%"

@ CALL :UCase _SAMPLE _RESULTS
@ ECHO.%_RESULTS%

@ CALL :LCase _SAMPLE _RESULTS
@ ECHO.%_RESULTS%

@ ENDLOCAL
@ GOTO:EOF


@ :LCase
@ :UCase
@ :: Converts to upper/lower case variable contents
@ :: Syntax: CALL :UCase _VAR1 _VAR2
@ :: Syntax: CALL :LCase _VAR1 _VAR2
@ :: _VAR1 = Variable NAME whose VALUE is to be converted to upper/lower case
@ :: _VAR2 = NAME of variable to hold the converted value
@ :: Note: Use variable NAMES in the CALL, not values (pass "by reference")

@ SET _UCase=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
@ SET _LCase=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
@ SET _Lib_UCase_Tmp=!%1!
@ IF /I "%0"==":UCase" SET _Abet=%_UCase%
@ IF /I "%0"==":LCase" SET _Abet=%_LCase%
@ FOR %%Z IN (%_Abet%) DO SET _Lib_UCase_Tmp=!_Lib_UCase_Tmp:%%Z=%%Z!
@ SET %2=%_Lib_UCase_Tmp%
@REM GOTO:EOF
@REM

当我使用此代码尝试创建文件夹时,它给出了与变量中的单词一样多的文件夹,即:            top = folder =“TOP”
           Hill Top = folder =“HILL”和folder =“TOP”

任何人的想法?

1 个答案:

答案 0 :(得分:0)

事实证明它非常简单......在创建目录时只需在变量周围使用双引号

%foldername%= hello world

单引号: mkdir“%foldername%”创建一个文件夹“hello”和一个文件夹“world”

双引号: mkdir“”%foldername%“”使文件夹成为“hello world”

当我意识到这个简单的错误时,我感到非常愚蠢。

相关问题