2017-11-25 209 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

相關問題