1 encryption cmd file batch-file
我正在研究一种将所有字母更改为一串数字的加密方法,示例如下:
set a=a
set b=b
set c=c
set aa=543241254
set bb=785214185
set cc=842501445
Run Code Online (Sandbox Code Playgroud)
我的问题是如何扫描用户输入的文件并将所有字母更改为数字。(正在更改的文件文本类似于“ hihowareyou”,没有空格或大写)我试图在所述文件中搜索“a”并将其替换为数字,但我的部分不起作用。
(for /f "delims=" %%i in ('findstr /n "^" "%textfile%"') do (
set "line=%%i"
setlocal enabledelayedexpansion
set "line=!line:%b%=%bb%!"
echo(!line!
endlocal
))>"%newfile%"
type "%newfile%" >>%newfile%
Run Code Online (Sandbox Code Playgroud)
我不知道如何扫描文本文件中的字母并将其替换为 %a%、%b%、%c% 等。
您首先应该意识到这些命令:
set a=a
set b=b
set c=c
Run Code Online (Sandbox Code Playgroud)
...“根据定义”是无用的(也就是说,没有进一步的解释),尽管很明显,在这种情况下,写作%a%总是与仅写作a相同(其余字母也是如此)。
如果你想用一串数字来改变一个字母,那么正确的方法应该是这样的:
set a=543241254
set b=785214185
set c=842501445
Run Code Online (Sandbox Code Playgroud)
然后,为了通过变量的内容更改“a”字母,您可以在命令中执行以下操作:for
set "line=!line:a=%a%!"
Run Code Online (Sandbox Code Playgroud)
再次:这会a通过a变量的内容更改字母。
现在,您应该意识到您不需要对单个a字母/变量执行先前的替换,而是对由一个字母表示的一系列变量执行。以相同方式处理一系列变量的标准方法(这实际上意味着“使用相同的代码”)是通过一个for命令,该命令将下标的值与数组相结合。例如,如果我们为数组的名称选择“字母”并在数组的不同元素中定义所需的替换值,那么我们肯定会这样做:
set letter[a]=543241254
set letter[b]=785214185
set letter[c]=842501445
Run Code Online (Sandbox Code Playgroud)
在此之后,我们只需要知道如何操纵这些变量/值。关于这一点的完整细节在 cmd.exe (batch) script中的数组、链表和其他数据结构中给出,所以我不会在这里再次重复。但是,解决此问题所需的阵列管理比该链接中给出的完整解释要简单。
如果执行此命令:set letter,将显示所有以“字母”开头的变量,包括它们的值;例如:
letter[a]=543241254
letter[b]=785214185
letter[c]=842501445
Run Code Online (Sandbox Code Playgroud)
如果我们用一个for /F "tokens=2,3 delims=[]=" %%a in ('set letter') do ...命令,则%%a替换的参数将包含阵列的下标中的每一个,即,字母a,b,c等等,并且该%%b参数将包含相应的数字值。
这样,为了完成您的程序并替换所有定义的字母,您只需将您的set "line=!line:%b%=%bb%!"行放在上一个for命令中并正确更改%b%代表字母的部分, by %%a; 并更换%bb%部分,即表示的数值,通过%%b:
for /F "tokens=2,3 delims=[]=" %%a in ('set letter') do (
set "line=!line:%%a=%%b!"
)
Run Code Online (Sandbox Code Playgroud)
当然,你也必须定义了letter在程序开始阵列...
| 归档时间: |
|
| 查看次数: |
685 次 |
| 最近记录: |