2016-08-24 89 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