windows - 无需调用即可批量将变量全部设为小写
问题描述
这是我发现的将值设为小写的代码,但很好奇如何在没有 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
解决方案
我不确定您要避免哪个调用 - for 循环中的调用或调用子例程。但是可以同时使用macro和delayedExpansion,它们的执行速度会更快:
@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%
此外,由于批处理文件中替换的工作方式,您可以只列出小写字母 - 这也将提高性能。可能上面的代码是仅在批处理文件中将字符串设置为小写的最快方法。
推荐阅读
- gcc - git bash 中的最大命令行长度
- ios - 分配 UITableView 内容以在 Swift iOS 中准备 segue
- git - 由于未合并文件与 git 子模块而无法提交
- entity-framework - 数据库优先中的Core 3.1 EF 6:无法确定多对多关系
- apscheduler - 测试一个job id是否存在APScheduler
- shell - 如何替换此 Zsh 表达式中的变量?
- python - 根据列表值间隔迭代列表
- python - Tensorflow 2.3.1 中的 Keras ImageDataGenerator 无法识别 DICOM 文件
- powershell - Powershell 脚本将 Caption-Abstract 应用于 .txt 文件中的图像
- sql-server - SQL Server 分层查询永远运行