2016-08-24 88 views
0

我有一個關於如何批量操作的問題。批量 - 如何使用變量替換單詞

我正在做一個批處理文件,將加密解密恩我有與解密故障信息

。當你加密一些可以用來解密信息的密鑰時,

我有這樣的代碼:

set de=%de:!de1!=a% 
set de=%de:!de2!=b% 
set de=%de:!de3!=c% 
set de=%de:!de4!=d% 
set de=%de:!de51!=e% 
set de=%de:!de6!=f% 
set de=%de:!de7!=g% 
set de=%de:!de8!=h% 
set de=%de:!de9!=i% 
set de=%de:!de10!=j% 
set de=%de:!de11!=k% 
set de=%de:!de12!=l% 
set de=%de:!de13!=m% 
set de=%de:!de14!=n% 
set de=%de:!de15!=o% 
set de=%de:!de16!=p% 
set de=%de:!de17!=q% 
set de=%de:!de18!=r% 
set de=%de:!de19!=s% 
set de=%de:!de20!=t% 
set de=%de:!de21!=u% 
set de=%de:!de22!=v% 
set de=%de:!de23!=w% 
set de=%de:!de24!=x% 
set de=%de:!de25!=y% 
set de=%de:!de26!=z% 

de是VAR在解密的消息會是什麼? de1de26是對應一個字母的鍵。

我在問什麼,例如如果消息是'你好',那個消息的加密是12334,關鍵是:h = 1 e = 2 l = 3 o = 4,它用數字替換數字?

+0

這不是很清楚你問什麼,但我假設 - 關於你的例子'hello' - 你有一個變量'de',存儲'12334',de1'保存'1','de5'保存'2','de12'保存'l'和' de15'擁有'o';如果是這種情況,你只需要切換即時和延時擴展,比如'set「de =!de:%de8%= h!」',所以一開始這行變成了'set「de =!de :1 = h!「',然後'設置」de =!h2334!「';無論如何,你不應該提供大量的'set'命令行,你應該將問題簡化爲核心問題,即嵌套擴展...... – aschipfl

+0

相關:[如何在批處理中創建嵌套變量?](http:// stackoverflow。 com/q/16964150/5047996) – aschipfl

+0

謝謝,我會試試這個。 – rster

回答

2

您犯了一個簡單的錯誤,請參閱set de=%de:!de51!=e%,如果您將該行更改爲set de=%de:!de5!=e%,則應修復該錯誤。該行打破代碼的原因是因爲%de51%是未定義的變量,這意味着CMD將該命令解釋爲set de=%de:=e%。這意味着,CMD將其解釋%de%作爲文字變量de:=e

固定碼:

set de=%de:!de1!=a% 
set de=%de:!de2!=b% 
set de=%de:!de3!=c% 
set de=%de:!de4!=d% 
set de=%de:!de5!=e% 
set de=%de:!de6!=f% 
set de=%de:!de7!=g% 
set de=%de:!de8!=h% 
set de=%de:!de9!=i% 
set de=%de:!de10!=j% 
set de=%de:!de11!=k% 
set de=%de:!de12!=l% 
set de=%de:!de13!=m% 
set de=%de:!de14!=n% 
set de=%de:!de15!=o% 
set de=%de:!de16!=p% 
set de=%de:!de17!=q% 
set de=%de:!de18!=r% 
set de=%de:!de19!=s% 
set de=%de:!de20!=t% 
set de=%de:!de21!=u% 
set de=%de:!de22!=v% 
set de=%de:!de23!=w% 
set de=%de:!de24!=x% 
set de=%de:!de25!=y% 
set de=%de:!de26!=z% 


工作例如:

@echo off 
setlocal ENABLEDELAYEDEXPANSION 
call :decrypt 12334 
echo %de% 
pause 
exit /b 

:decrypt 
set "de=%~1" 
set de1=1 
set de2=2 
set de3=3 
set de4=4 
set de5=5 
set de6=6 
set de7=7 
set de8=8 
set de9=9 
set de10=10 
set de11=11 
set de12=12 
set de13=13 
set de14=14 
set de15=15 
set de16=16 
set de17=17 
set de18=18 
set de19=19 
set de20=20 
set de21=21 
set de22=22 
set de23=23 
set de24=24 
set de25=25 
set de26=26 
set de=!de:%de1%=a! 
set de=!de:%de2%=b! 
set de=!de:%de3%=c! 
set de=!de:%de4%=d! 
set de=!de:%de5%=e! 
set de=!de:%de6%=f! 
set de=!de:%de7%=g! 
set de=!de:%de8%=h! 
set de=!de:%de9%=i! 
set de=!de:%de10%=j! 
set de=!de:%de11%=k! 
set de=!de:%de12%=l! 
set de=!de:%de13%=m! 
set de=!de:%de14%=n! 
set de=!de:%de15%=o! 
set de=!de:%de16%=p! 
set de=!de:%de17%=q! 
set de=!de:%de18%=r! 
set de=!de:%de19%=s! 
set de=!de:%de20%=t! 
set de=!de:%de21%=u! 
set de=!de:%de22%=v! 
set de=!de:%de23%=w! 
set de=!de:%de24%=x! 
set de=!de:%de25%=y! 
set de=!de:%de26%=z! 
goto :EOF 
+0

謝謝,我會試試這個 – rster

+0

是的,謝謝! – rster