2016-08-24 5 views
0

私はバッチで何かをする必要があるかについて質問があります。バッチ - varを使用して単語を置き換える方法

私は復号とのトラブルを抱えているメッセージ

を解読専用暗号化するバッチファイルを作っています。何かを暗号化すると、メッセージの復号化に使用できる鍵が作成されます。

私はこのコードを持っている:deは、復号化されたメッセージがなるVARある

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% 

de1de26は、文字に対応するキーです。

メッセージが「hello」で、そのメッセージの暗号化が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! "'のように即時拡張と遅延拡張を切り替えるだけで済みます。 :1 = h! "'、次に 'set" de =!h2334! ";とにかく、たくさんの 'set'コマンドラインを提供するのではなく、中核的な問題、すなわちネストされた展開に質問を減らすべきです... – aschipfl

+0

Related:[入れ子にされた変数をバッチで作成する方法](http:// stackoverflow。 com/q/16964150/5047996) – aschipfl

+0

ありがとう、私はこれを試してみます。 – rster

答えて

2

簡単な間違いをしました。に変更した場合は、set de=%de:!de51!=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