中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助!如何用批处理实现有规律的批量替换字母?
作者:
标题: 求助!如何用批处理实现有规律的批量替换字母? 上一主题 | 下一主题
henryxrl
新手上路





积分 3
发帖 3
注册 2010-4-2
状态 离线
『楼 主』:  求助!如何用批处理实现有规律的批量替换字母?

一个朋友恶搞,把一封英文的email中所有的字母都向前移了3位。
例如:现在的d其实是a,现在的p其实是m,现在的a其实是,现在的odzuhqfh应该是Lawrence...

对应关系是这样的:
set str1=defghijklmnopqrstuvwxyzabc
:: str1 is to be decoded
set str2=abcdefghijklmnopqrstuvwxyz

受小写转大写.cmd的启发,我想能不能也一个吧这封email还原的批处理。。。

于是:

@echo off

set str1=defghijklmnopqrstuvwxyzabc
:: str1 is to be decoded
set str2=abcdefghijklmnopqrstuvwxyz

:main
cls
set str=
set /p str=    Please enter string (Press ENTER if you want to exit directly):
if not defined str exit
cls
echo.
echo            Before decoded: "%str%"
echo.
for /l %%i in (0,1,25) do (
    call set char1=%%str1:~%%i,1%%
    call set char2=%%str2:~%%i,1%%
    call :change
)
echo ____________________________________________
echo.
echo            Decoded: "%str%"
echo.
echo                     Press any buttom to decode again......
pause>nul
goto main

:change
call call set str=%%%%str:%%char1%%=%%char2%%%%%%
goto :eof
@echo off


本以为万事大吉,但可惜g到c对应的是对的,即d到z,但是最前面的d,e,和f所对应的并不是a,b,和c,而是x,y,和z!!这到底是怎么回事?或者说,有什么别的方法能达到同样的效果?本人是绝对的菜鸟,请大家多多关照。。。

[ Last edited by henryxrl on 2010-9-17 at 12:59 ]

2010-9-17 12:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 2 楼』:  

set str1=abcdefghijklmnopqrstuvwxyz`#@
:: str1 is to be decoded
set str2=`#@abcdefghijklmnopqrstuvwxyz

for /l %%i in (0,1,28) do (

[ Last edited by slore on 2010-9-17 at 23:16 ]



S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2010-9-17 22:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
henryxrl
新手上路





积分 3
发帖 3
注册 2010-4-2
状态 离线
『第 3 楼』:  

WOW!!! 成功了!!太感谢了!!! 但是。。。为什么这样能行呢?能否告知原理?还有,`#@是什么东东?

2010-9-18 02:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 4 楼』:  

你原来d换成a

a又换成x

现在用~◎#就是个临时。。。这样是为了区别是你本身有的abc,还是def替换后的abc

你原来的方式是看不到abc的。。。abc都对应换成了xyz



S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2010-9-18 17:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
henryxrl
新手上路





积分 3
发帖 3
注册 2010-4-2
状态 离线
『第 5 楼』:  

明白了,多谢指点~

2010-9-20 10:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: