中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]批处理能做摩斯代码转换吗?
作者:
标题: [求助]批处理能做摩斯代码转换吗? 取消高亮 | 上一主题 | 下一主题
DOS2BAT
新手上路





积分 11
发帖 10
注册 2010-7-9
状态 离线
『楼 主』:  [求助]批处理能做摩斯代码转换吗?

批处理能做到摩斯代码转换吗?用户输入英语字母,并转换为摩斯电码,存到一个文本当中。我想到了用set,也不知道行不,目前还是没点头绪,求助大家了! 转换格式: 例如:I LOVE YOU 转换为:.. .-.. --- ...- . -.-- --- ..- 另附上摩斯电码与英文的转换代码: A .- I .. Q --.- Y -.-- 7 --… B -… J .--- R .-. Z --.. 8 ---.. C -.-. K -.- S … 1 .---- 9 ----. D -.. L .-.. T - 2 ..--- 0 ----- E . M -- U ..- 3 …-- . .-.-.- F ..-. N -. V …- 4 ….- ? ..--.. G --. O --- W .-- 5 ….. , --..-- H …. P .--. X -..- 6 -….


2010-8-22 21:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 2 楼』:  

for+set很容易实现编码,就是不知怎么解码。没看出有什么规律


2010-8-22 23:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 3 楼』:  

暈了,看出來了,原來是一一對應的關系。 編碼:
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1,2" %%I in (code.ini) do set #%%I=%%J
for /f "delims=" %%I in (TestFile.txt) do (
	set line=%%I&set newline=
	for /l %%x in (0,1,1000) do if "!line:~%%x,1!" neq "" call:sub !line:~%%x,1!
	echo !newline!
)
:sub
	if "%1" equ "" (set "newline=%newline%  "&goto:eof)
	set "newline=%newline%!#%1! "
goto:eof
fix: 每個間單詞編碼後用空格分開。 [ Last edited by freeants001 on 2010-8-23 at 00:00 ]


2010-8-22 23:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
DOS2BAT
新手上路





积分 11
发帖 10
注册 2010-7-9
状态 离线
『第 4 楼』:  

你这个不行哦……,我要的是用户输入后进行转换,而且你这个代码似乎有点问题,窗口一闪而过。没办法实现!


2010-8-23 12:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
DOS2BAT
新手上路





积分 11
发帖 10
注册 2010-7-9
状态 离线
『第 5 楼』:  

的确是对应关系,一个字母对应一个字符。


2010-8-23 12:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
freeants001
中级用户




积分 330
发帖 244
注册 2006-4-14
来自 湖北
状态 离线
『第 6 楼』:  

Originally posted by DOS2BAT at 2010-8-23 12:26: 你这个不行哦……,我要的是用户输入后进行转换,而且你这个代码似乎有点问题,窗口一闪而过。没办法实现!
3楼代码没有问题,用户输入后转换可以试试下面的:
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1,2" %%I in ('more +12 "%~f0"') do set #%%I=%%J
:begin
set newline=
set/p line=Please input a string:
for /l %%x in (0,1,1000) do if "!line:~%%x,1!" neq "" call:sub !line:~%%x,1!
echo.string: !line!&echo.enCode: !newline!&echo.!newline!>>encode$$$.txt
goto:begin
:sub
  if "%1" equ "" (set "newline=%newline%  "&goto:eof)
  set "newline=%newline%!#%1! "
goto:eof
A .- 
I .. 
Q --.- 
Y -.-- 
7 --… 
B -… 
J .--- 
R .-. 
Z --.. 
8 ---.. 
C -.-. 
K -.- 
S … 
1 .---- 
9 ----. 
D -.. 
L .-.. 
T - 
2 ..--- 
0 ----- 
E . 
M -- 
U ..- 
3 …-- 
. .-.-.- 
F ..-. 
N -. 
V …- 
4 ….- 
? ..--.. 
G --. 
O --- 
W .-- 
5 ….. 
, --..-- 
H …. 
P .--. 
X -..- 
6 -…. 
[ Last edited by freeants001 on 2010-8-23 at 14:27 ]


   此帖被 +1 点积分    点击查看详情   
评分人:【 doshsyy 分数: +1  时间:2010-8-24 09:45


2010-8-23 14:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
DOS2BAT
新手上路





积分 11
发帖 10
注册 2010-7-9
状态 离线
『第 7 楼』:  

你的转换不规范噢~转换之后的密文没办法转成原文!可能是空格呀,那些不规范吧,希望可以解决。 这个是个在线转换的网址,若能利用其转换也可以,不过这下子就要人家能上网才可以用了。还是不想要。 blog.gxceo.com/gj/mo ...


2010-8-23 20:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
WANKOILZ
初级用户





积分 198
发帖 89
注册 2007-9-6
来自 重庆
状态 离线
『第 8 楼』:  

批处理之家早就有了:bbs.bathome.net ...


2010-8-23 20:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
doshsyy
新手上路





积分 19
发帖 15
注册 2010-8-20
状态 离线
『第 9 楼』:  

6楼代码完全正确,是你给的替换表不对哦!你把"-"写成了"—","..."写成了"…",这是不一样的哦!所以我改了一下: @echo off&setlocal enabledelayedexpansion for /f "tokens=1,2" %%I in ('more +12 "%~f0"') do set #%%I=%%J :begin set newline= set/p line=Please input a string: for /l %%x in (0,1,1000) do if "!line:~%%x,1!" neq "" call:sub !line:~%%x,1! echo.string: !line!&echo.enCode: !newline!&echo.!newline!>>encode$$$.txt goto:begin :sub if "%1" equ "" (set "newline=%newline% "&goto:eof) set "newline=%newline%!#%1! " goto:eof A .- I .. Q --.- Y -.-- 7 --... B -... J .--- R .-. Z --.. 8 ---.. C -.-. K -.- S ... 1 .---- 9 ----. D -.. L .-.. T - 2 ..--- 0 ---- E . M -- U ..- 3 ...-- . .-.-.- F ..-. N -. V ...- 4 ....- ? ..--.. G --. O --- W .-- 5 ..... , --..-- H .... P .--. X -..- 6 -....


2010-8-24 09:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
DOS2BAT
新手上路





积分 11
发帖 10
注册 2010-7-9
状态 离线
『第 10 楼』:  

OK,谢谢各位,代码好复杂啊~看不懂,菜鸟一个,承蒙照顾! 目前在研究怎么翻译密文,嘻嘻。这样不上网也可以进行转换了。


2010-8-27 21:35
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: