中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-24 14:56
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]批处理能做摩斯代码转换吗? 查看 1,213 回复 9
楼 主 [求助]批处理能做摩斯代码转换吗? 发表于 2010-08-22 21:27 ·  中国 广东 深圳 电信
新手上路
积分 11
发帖 10
注册 2010-07-09 14:27
15年会员
UID 170292
性别 男
状态 离线
批处理能做到摩斯代码转换吗?用户输入英语字母,并转换为摩斯电码,存到一个文本当中。我想到了用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 -….
2 发表于 2010-08-22 23:39 ·  中国 湖北 黄石 电信
中级用户
★★
积分 330
发帖 244
注册 2006-04-14 14:07
20年会员
UID 53823
性别 男
来自 湖北
状态 离线
for+set很容易实现编码,就是不知怎么解码。没看出有什么规律
3 发表于 2010-08-22 23:52 ·  中国 湖北 黄石 电信
中级用户
★★
积分 330
发帖 244
注册 2006-04-14 14:07
20年会员
UID 53823
性别 男
来自 湖北
状态 离线
暈了,看出來了,原來是一一對應的關系。

編碼:

@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 ]
4 发表于 2010-08-23 12:26 ·  中国 广东 深圳 电信
新手上路
积分 11
发帖 10
注册 2010-07-09 14:27
15年会员
UID 170292
性别 男
状态 离线
你这个不行哦……,我要的是用户输入后进行转换,而且你这个代码似乎有点问题,窗口一闪而过。没办法实现!
5 发表于 2010-08-23 12:27 ·  中国 广东 深圳 电信
新手上路
积分 11
发帖 10
注册 2010-07-09 14:27
15年会员
UID 170292
性别 男
状态 离线
的确是对应关系,一个字母对应一个字符。
6 发表于 2010-08-23 14:09 ·  中国 湖北 黄石 电信
中级用户
★★
积分 330
发帖 244
注册 2006-04-14 14:07
20年会员
UID 53823
性别 男
来自 湖北
状态 离线
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-08-24 09:45
7 发表于 2010-08-23 20:31 ·  中国 广东 深圳 电信
新手上路
积分 11
发帖 10
注册 2010-07-09 14:27
15年会员
UID 170292
性别 男
状态 离线
你的转换不规范噢~转换之后的密文没办法转成原文!可能是空格呀,那些不规范吧,希望可以解决。
这个是个在线转换的网址,若能利用其转换也可以,不过这下子就要人家能上网才可以用了。还是不想要。
http://blog.gxceo.com/gj/morse.html
8 发表于 2010-08-23 20:46 ·  中国 四川 电信
初级用户
★★
积分 198
发帖 89
注册 2007-09-06 23:22
18年会员
UID 96746
性别 男
来自 重庆
状态 离线
批处理之家早就有了:http://bbs.bathome.net/thread-6467-1-2.html
9 发表于 2010-08-24 09:48 ·  中国 浙江 杭州 电信
新手上路
积分 19
发帖 15
注册 2010-08-20 13:09
15年会员
UID 172706
性别 男
状态 离线
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 -....
10 发表于 2010-08-27 21:35 ·  中国 广东 深圳 电信
新手上路
积分 11
发帖 10
注册 2010-07-09 14:27
15年会员
UID 170292
性别 男
状态 离线
OK,谢谢各位,代码好复杂啊~看不懂,菜鸟一个,承蒙照顾!
目前在研究怎么翻译密文,嘻嘻。这样不上网也可以进行转换了。
论坛跳转: