批量 - 将数字切换到其对应的字母并返回

时间:2017-07-18 03:14:59

标签: batch-file cmd

我不确定如何执行此操作,但我正在创建一个批处理文件,以便将数字切换到字母对应部分并返回。

我在线搜索,我从stackoverflow找到了这个:

@echo off
setlocal enableDelayedExpansion
set "text=This is a test"
set "code=!text!"
set "chars=0abcdefghijklmnopqrstuvwxyz"
for /l %%N in (1 1 26) do for /f %%C in ("!chars:~%%N,1!") do set "code=!code:%%C=%%N !"
echo !text!
echo !code!
pause

它可以将字母更改为数字,但是我试图将数字更改回他们的信件记者。 (单词中的空格是数字中的双重空格)

这似乎更难,因为数字可以像set /a Num+=1一样添加 并且不能添加字母。

我想要完成的例子:

1 2 3 4 - abcd

19 20 1 3 11 15 22 5 18 6 12 15 23 - stackoverflow

任何人都知道怎么做?

2 个答案:

答案 0 :(得分:3)

@echo off
setlocal enableDelayedExpansion
set "text=This is a test"
set "code=%text%"
set "chars=0abcdefghijklmnopqrstuvwxyz"
for /l %%N in (1 1 26) do for /f %%C in ("!chars:~%%N,1!") do set "code=!code:%%C=%%N !"
echo %text%
echo %code%
ECHO ----------------------------------
SET "decode=%code%"
for /l %%N in (26 -1 1) do for /f %%C in ("!chars:~%%N,1!") do set "decode=!decode:%%N =%%C!"
echo %text%
echo %code%
ECHO %decode%
GOTO :EOF

由于每个字母都被数字替换为空格,因此您需要认识到1表示a11表示k21表示u,因此您需要先替换最高的数字。数字+空格成为与用于编码数据的字符串相同的第N个字符。

请注意,%var%!var!在循环之外是相同的。在循环外使用!var!形式可能会让人感到困惑,因为它会使编码人员注意到原始值和更改值之间的差异。

答案 1 :(得分:0)

以下是使用批处理命令powershell.exe执行此操作的方法。最困难的问题是处理太空人物。

PS C:\src\t> Get-Content .\cn.ps1
$text = 'This is a test'
$text

$nums = ((($text.ToLower() -replace " ","``").ToCharArray() |
    ForEach-Object { [int]$_ - [int][char]"``" }) -join ' ') -replace ' 0 ','  '
$nums

$letters = ((($nums.Trim()).Split() |
    ForEach-Object { [char]([int]$_ + [int][char]"``") }) -join '') -replace "``"," "
$letters

PS C:\src\t> .\cn.ps1
This is a test
20 8 9 19  9 19  1  20 5 19 20
this is a test

可以将其写入批处理脚本。

C:\src\t>powershell -NoProfile -File cn.ps1
This is a test
20 8 9 19  9 19  1  20 5 19 20
this is a test