2017-11-25 210 views
0

我需要一些帮助来使用CMD。我是一个业余程序员,所以请用技术术语温柔!不过,我认为我所需要的对于程序员来说非常简单!通过CMD使用符号替换文本中的字母

我正在开发一个简单的文本编码/解码bot(与WinAutomation软件),将运行在一个非常缓慢的MS Windows PC。我使用我自己的编码/解码方法多年,所以我不想使用现成的解决方案。 我希望能够用符号代替任何文字(作为变量)中的任何字母,反之亦然。

示例: “一个”将“[?]”
“B”,将“[*]”
“C”,将“[/]”

反之亦然

“[?]”将是“一个”
“[*]”将是“b”

我目前使用一个循环做130所字母替换。循环执行速度非常快,导致CPU速度慢,内存超载。另一方面,如果我在循环结束时放置等待动作(最少1秒),替换将在130秒内完成。这是浪费时间!

我需要一个一行代码,以便一次通过CMD进行替换。 程序员建议我的代码段下面,似乎工作,但它不是一个行

SET _test=12345abcabc 
SET _result=%_test:ab=xy% 
SET _result=%_result:1=2% 

我怎样才能把它转换在同一行?我试过& &和||但我做错了什么!

下面我从WinAutomation的运行命令窗口上传了一张图片。你可以在这里查看https://imgur.com/3hbcCZE

谢谢

回答

0

这可以在一行中完成。 ENABLEDELAYEDEXPANSION需要设置。一(1)行之前和之后的代码只是为了确保变量设置为空,并显示它们设置为空。

C:>type and.bat 
@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 

SET "_test=" 
SET "_result=" 
ECHO _test is %_test%, _result is %_result% 

REM Here is the one (1) line. 

SET "_test=12345abcabc" && SET "_result=!_test:ab=xy!" && SET "_result=!_result:1=2%! 

ECHO _test is %_test%, _result is %_result% 

这是运行脚本的结果。

C:>CALL and.bat 
_test is , _result is 
_test is 12345abcabc, _result is 22345xycxyc 
+0

嗨! 谢谢你的回复。看来我做错了什么! 我已经上传了cmd屏幕供您查看! https://imgur.com/wyxJSVX – coreto98

+0

顺便说一句,我还使用了[==]的替换。例如,c = [==]或d = [“]。 我通过一个bat文件运行脚本,并在替换内部获得了一些符号。 我得到[B]的刚刚[©] – coreto98

+0

的图片可以放入SO中。请编辑该问题。 – lit

相关问题