Batch file 用延迟扩展替换字符串(区分大小写)-批处理

Batch file 用延迟扩展替换字符串(区分大小写)-批处理,batch-file,replace,case-sensitive,delayedvariableexpansion,Batch File,Replace,Case Sensitive,Delayedvariableexpansion,我想写一个非常简单的脚本来“编码”和“解码”字符串,用数字替换每个字符,启用延迟扩展。但是我使用的语法应该是错误的,因为它根本不起作用 另外,是否有方法执行区分大小写的替换,以恢复原始字符串 @echo off setlocal EnableDelayedExpansion set "alphabet=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" set "offset=15" set "delimiter=-"

我想写一个非常简单的脚本来“编码”和“解码”字符串,用数字替换每个字符,启用延迟扩展。但是我使用的语法应该是错误的,因为它根本不起作用

另外,是否有方法执行区分大小写的替换,以恢复原始字符串

@echo off
setlocal EnableDelayedExpansion

set "alphabet=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
set "offset=15"
set "delimiter=-"

set "string=TeSt 123 tEsT 456"

set encoded=!string!
for /l %%N in (0 1 61) do (
    set "char=!alphabet:~%%N,1!"
    set /a "code=%%N+!offset!"
    echo !char! = !code!
    set "encoded=!encoded:%char%=%code%%delimiter%!"
)

set decoded=!encoded!
for /l %%N in (0 1 61) do (
    set "char=!alphabet:~%%N,1!"
    set /a "code=%%N+!offset!"
    echo !code! = !char!
    set "decoded=!decoded:%code%%delimiter%=%char%!"
)

echo original: !string!
echo encoded: !encoded!
echo decoded: !decoded!

pause
exit

谢谢

字符替换不区分大小写。您必须迭代字符串长度并将每个字符与
If/i
进行比较,或者使用另一种更适合此任务的脚本语言。@LotPings谢谢,我就是这么想的。我决定用自动热键来编写脚本,并且我能够轻松快速地完成我的想法!(顺便说一下,我不太喜欢批处理语言,做简单的事情似乎很复杂…^)