具有区分大小写的字符串操作

Joh*_*DOE 3 cmd batch-file

让我们说我们有一个像变量;

set test=This is a Test string.
Run Code Online (Sandbox Code Playgroud)

我们希望t用大写字母替换每个小写字母X以获得所需的输出;

This is a TesX sXring.
Run Code Online (Sandbox Code Playgroud)

我使用的字符串操作tryed set test=%test:t=X%但其替换每个tX.我也尝试过@dbenham的JREPL.bat但是无法解决它.

dbe*_*ham 6

没有本地批处理命令可以方便地执行区分大小写的字符串操作.本机批处理解决方案必须在循环中逐个字符地构建新字符串.非常可行 - 但是痛苦而且效率低下.

编辑 - 很久以前我写了一个名为modFile.bat的纯批处理实用程序,它对文本文件的内容进行区分大小写的查找/替换.性能不错,但确实有一些限制.我很少使用该代码.我编写了一个伴随程序来对变量而不是文本文件进行区分大小写的查找/替换,但我似乎丢失了该代码.

今天,每当我想操纵文本时,我几乎总是使用JREPL.BAT.

您的示例的JREPL.BAT解决方案应该是:

for /f delims^=^ eol^= %%A in ('jrepl t X /s test') do set "test=%%A"
Run Code Online (Sandbox Code Playgroud)

但似乎有一个错误.如果变量名称是除了之外的某个名称,它可以工作test.看起来我有一些调试要做.

在修复错误之前,您可以使用:

for /f delims^=^ eol^= %%A in ('cmd /v:on /c "echo(!test!)|jrepl t X"') do set "test=%%A"
Run Code Online (Sandbox Code Playgroud)


更新:版本3.4中已修复该错误/S选项现在适用于名为的变量TEST.