首页 > 解决方案 > 无需调用即可批量将变量全部设为小写

问题描述

这是我发现的将值设为小写的代码,但很好奇如何在没有 CALL 的情况下做到这一点并且只使用一个变量:

SET String=Hello, how are you ?
CALL :LoCase String
:LoCase
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%%"
GOTO:EOF

标签: windowsbatch-filecmd

解决方案


我不确定您要避免哪个调用 - for 循环中的调用或调用子例程。但是可以同时使用macrodelayedExpansion,它们的执行速度会更快:

@echo off

set locase=for /L %%n in (1 1 2) do if %%n==2 ( for %%# in (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) do set "result=!result:%%#=%%#!") ELSE setlocal enableDelayedExpansion ^& set result=

set "string=SOme STrinG "
%locase%%string%

echo %result%

此外,由于批处理文件中替换的工作方式,您可以只列出小写字母 - 这也将提高性能。可能上面的代码是仅在批处理文件中将字符串设置为小写的最快方法。


推荐阅读