Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理-如何使用变量替换单词_Batch File_Encryption - Fatal编程技术网

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
是解密消息的var
de1
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
命令行,而是应该将问题归结为核心问题,即嵌套扩展…相关:谢谢,我来试试这个。谢谢,我来试试这个谢谢,我来试试这个