Batch file 批处理-如何使用变量替换单词
我有一个问题,我需要如何分批做一些事情 我正在制作一个批处理文件,用于加密和解密消息 我解密有困难。加密某个内容时,会创建一个密钥,用于解密消息 我有以下代码:Batch file 批处理-如何使用变量替换单词,batch-file,encryption,Batch File,Encryption,我有一个问题,我需要如何分批做一些事情 我正在制作一个批处理文件,用于加密和解密消息 我解密有困难。加密某个内容时,会创建一个密钥,用于解密消息 我有以下代码: 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=%
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
是解密消息的varde1
到de26
是对应字母的键
我要问的是如何使它,例如,如果消息是“hello”,则该消息的加密是12334,密钥是:h=1e=2l=3o=4,它将数字替换为字母?您犯了一个简单的错误,请参见
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
您犯了一个简单的错误,请参见
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
不太清楚你在问什么,但我假设——根据你的例子
hello
——你有一个变量de
,其中12334
被存储,并且de1
保持1
,de5
保持2
,de12
保持l
和de15
保持o
;如果是这种情况,您只需切换立即扩展和延迟扩展,例如设置“de=!de:%de8%=h!”
,因此首先行变成设置“de=!de:1=h!”
,然后设置“de=!h2334!”
;无论如何,不要提供大量的set
命令行,你应该把问题归结为核心问题,即嵌套扩展…相关:谢谢,我试试这个。你问的不太清楚,但是我假设——根据你的例子hello
——你有一个变量de
,其中12334
被存储,并且de1
保持1
,de5
保持2
,de12
保持l
和de15
保持o
;如果是这种情况,您只需切换立即扩展和延迟扩展,例如设置“de=!de:%de8%=h!”
,因此首先行变成设置“de=!de:1=h!”
,然后设置“de=!h2334!”
;无论如何,不要提供大量的set
命令行,而是应该将问题归结为核心问题,即嵌套扩展…相关:谢谢,我来试试这个。谢谢,我来试试这个谢谢,我来试试这个