中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 写着玩儿的东西——看看你的名字代表什么武器(武功)
作者:
标题: 写着玩儿的东西——看看你的名字代表什么武器(武功) 上一主题 | 下一主题
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『楼 主』:  写着玩儿的东西——看看你的名字代表什么武器(武功)

在网上看都这样的东西:

  Quote:
看看你的姓名代表什么武器
  把自己的名字,例如:“王二小”=“WEX”=“九天丧门锤”
  附:
  1、从姓氏开始找,再往下找名。若是只有两个字的,便从“姓氏”与“结字”中各找一个。
  2、若是三个字的,便先从“姓氏”找起,再往下找两个名;姓名后两个字是重复的就在“结字”中取一。
  3、复姓者在姓氏中取2字。
  
  姓氏:
  A:奇门 B:玄天 C:日月 D:毒龙 E:夜叉 F:葵花 G:纯阳 H:玉女
  J:六合 K:天罡 L:天羽 M:八卦 N:太乙 O:落英 P:鹰蛇 Q:太极
  R:回风 S:混沌 T:乾坤 W:九天 X:神门 Y:百变 Z:逍遥
  
  中字:
  A:拂穴 B:降魔 C:霹雳 D:阴阳 E:丧门 F:真气 G:修罗 H:碎石
  J:九九 K:绵 L:无痕 M:两仪 N:五神 O:穿云 P:破玉 Q:奇
  R:迅雷 S:伏魔 T:游身 W:连环 X:无形 Y:神 Z:无双
  
  结字:
  A:钉 B:棒 C:掌 D:刀 E:拳 F:掌 G:爪 H:指
  J:斧 K:钩 L:棍 M:杖 N:鞭 O:剑 P:镖 Q:索
  R:刀 S:拳 T:手 W:功 X:锤 Y:枪 Z:剑

随便写了下代码,本来可以优化一下,提高效率的,不过是随意写的,也就不再费劲修改了。没有什么实际应用价值,但是可以帮助新手理解一下for、if的嵌套应用。
@echo off&setlocal ENABLEDELAYEDEXPANSION
echo 请输入你名字的拼音字头缩写,例如:张三 —— ZS
set/p xingming=
set "var1=%xingming:~0,1%"
set "var2=%xingming:~1,1%"
set "var3=%xingming:~2,1%" 2>nul
for /f %%i in ('findstr /i /c:"姓氏%var1%" "%~f0"') do (
    set str1=%%i
    set str1=!str1:~-2!
    for /l %%a in (0,1,2) do (
       if "!xingming:~%%a,1!"=="" set strlen=%%a
       if "!strlen!"=="2" (
           for /f %%j in ('findstr /i /c:"结字%var2%" "%~f0"') do (
               set str2=%%j&set str2=!str2:~-1!&cls&echo.&echo 你的姓名“%xingming%”所代表的武功为——!str1!!str2!&pause&exit
           )
        ) else (
        for /f %%j in ('findstr /i /c:"中字%var2%" "%~f0"') do (
            set str2=%%j&if not "!str2:~-2,1!"=="|" (set str2=!str2:~-2!
                            ) else (
                              set str2=!str2:~-1!
                            )
               for /f %%k in ('findstr /i /c:"结字%var3%" "%~f0"') do (
                  set str3=%%k&set str3=!str3:~-1!
               )
        )
        )
    )
)
cls&echo.&echo 你的姓名“%xingming%”所代表的武功为——!str1!!str2!!str3!&pause&exit



姓氏A|奇门
姓氏B|玄天
姓氏C|日月
姓氏D|毒龙
姓氏E|夜叉
姓氏F|葵花
姓氏G|纯阳
姓氏H|玉女
姓氏J|六合
姓氏K|天罡
姓氏L|天羽
姓氏M|八卦
姓氏N|太乙
姓氏O|落英
姓氏P|鹰蛇
姓氏Q|太极
姓氏R|回风
姓氏S|混沌
姓氏T|乾坤
姓氏W|九天
姓氏X|神门
姓氏Y|百变
姓氏Z|逍遥     
中字A|拂穴
中字B|降魔
中字C|霹雳
中字D|阴阳
中字E|丧门
中字F|真气
中字G|修罗
中字H|碎石
中字J|九九
中字K|绵
中字L|无痕
中字M|两仪
中字N|五神
中字O|穿云
中字P|破玉
中字Q|奇
中字R|迅雷
中字S|伏魔
中字T|游身
中字W|连环
中字X|无形
中字Y|神
中字Z|无双     
结字A|钉
结字B|棒
结字C|掌
结字D|刀
结字E|拳
结字F|掌
结字G|爪
结字H|指
结字J|斧
结字K|钩
结字L|棍
结字M|杖
结字N|鞭
结字O|剑
结字P|镖
结字Q|索
结字R|刀
结字S|拳
结字T|手
结字W|功
结字X|锤
结字Y|枪
结字Z|剑




三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2007-8-3 15:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 2 楼』:  

有意思,什么时候自己能写出这样的批处理,羡慕...

2007-8-3 16:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 3 楼』:  

jmz573515兄的进步是大家有目共睹的,多多练习写代码,你就可以的。
其实我的代码没有完全依照它所附的要求做,因为那样要增加很多判断,例如是否复姓等。
所以我的代码中,你输入三位中文名字,无论是复姓还是名字中两个字一样,都当作是一(姓氏)、二(中字)、三(结字)来处理的。
不过感觉还好,例如:
南宫灵——太乙修罗棍
苏蓉蓉——混沌迅雷刀
......



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2007-8-3 17:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Runas
初级用户





积分 74
发帖 38
注册 2007-7-25
状态 离线
『第 4 楼』:  

哈哈,六合连环功~ ^_^

2007-8-3 18:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tao0610
高级用户

朦胧的世界


积分 579
发帖 218
注册 2006-10-24
状态 离线
『第 5 楼』:  

最好再加个输入判断
@echo off&setlocal ENABLEDELAYEDEXPANSION
echo 请输入你名字的拼音字头缩写,例如:张三 —— ZS
set n=0&set/p xingming=
for %%a in (姓氏 中字 结字) do (
   call set s=%%xingming:~!n!,1%%
   if not defined s set str1=&&set s=%xingming:~1,1%
   call :find %%a!s!
   set/a n+=1)
cls&echo.&echo 你的姓名“%xingming%”所代表的武功为——!str0!!str1!!str2!&pause&exit

:find
for /f "tokens=2 delims=^| " %%a in ('find/i "%1" %~s0') do set str%n%=%%a
goto :eof

姓氏A|奇门
姓氏B|玄天
姓氏C|日月
姓氏D|毒龙
姓氏E|夜叉
姓氏F|葵花
姓氏G|纯阳
姓氏H|玉女
姓氏J|六合
姓氏K|天罡
姓氏L|天羽
姓氏M|八卦
姓氏N|太乙
姓氏O|落英
姓氏P|鹰蛇
姓氏Q|太极
姓氏R|回风
姓氏S|混沌
姓氏T|乾坤
姓氏W|九天
姓氏X|神门
姓氏Y|百变
姓氏Z|逍遥     
中字A|拂穴
中字B|降魔
中字C|霹雳
中字D|阴阳
中字E|丧门
中字F|真气
中字G|修罗
中字H|碎石
中字J|九九
中字K|绵
中字L|无痕
中字M|两仪
中字N|五神
中字O|穿云
中字P|破玉
中字Q|奇
中字R|迅雷
中字S|伏魔
中字T|游身
中字W|连环
中字X|无形
中字Y|神
中字Z|无双     
结字A|钉
结字B|棒
结字C|掌
结字D|刀
结字E|拳
结字F|掌
结字G|爪
结字H|指
结字J|斧
结字K|钩
结字L|棍
结字M|杖
结字N|鞭
结字O|剑
结字P|镖
结字Q|索
结字R|刀
结字S|拳
结字T|手
结字W|功
结字X|锤
结字Y|枪
结字Z|剑


   此帖被 +5 点积分      点击查看详情   
评分人:【 ccwan 分数: +5  时间:2007-8-3 18:18





认识自己,降伏自己,改变自己
,才能改变别人!
2007-8-3 18:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 6 楼』:  

妙极!兄的代码确实精彩,比我强的多了。



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2007-8-3 18:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 7 楼』:  

VBS的
XX="A奇门 B玄天 C日月 D毒龙 E夜叉 F葵花 G纯阳 H玉女 J六合 K天罡 L天羽 M八卦 N太乙 O落英 P鹰蛇 Q太极 R回风 S混沌 T乾坤 W九天 X神门 Y百变 Z逍遥"
ZZ="A拂穴 B降魔 C霹雳 D阴阳 E丧门 F真气 G修罗 H碎石 J九九 K绵 L无痕 M两仪 N五神 O穿云 P破玉 Q奇 R迅雷 S伏魔 T游身 W连环 X无形 Y神 Z无双"
JZ="A钉 B棒 C掌 D刀 E拳 F掌 G爪 H指 J斧 K钩 L棍 M杖 N鞭 O剑 P镖 Q索 R刀 S拳 T手 W功 X锤 Y枪 Z剑"
do
    n=inputbox ("请输入你名字的拼音字头缩写,例如:" & vbcrlf & "张三 — ZS","看看你的名字代表什么武器(武功)")
    if n=false then wscript.quit
    if len(n)=2 then
        JG="你的姓名“" & n & "”所代表的武功为—【" & find(XX,ucase(left(n,1))) & find(JZ,ucase(right(n,1))) & "】"
    elseif len(n)=3 then
        JG="你的姓名“" & n & "”所代表的武功为—【" & find(XX,ucase(left(n,1))) & find(ZZ,ucase(mid(n,2,1))) & find(JZ,ucase(right(n,1))) & "】"
    else
        JG="输入错误!"
    end if
loop until msgbox(JG & VBCRLF & "是否继续查看?",32+vbyesno+4096,"结果")=vbno
function find(a,b)
    on error resume next
    s=split(a):h=filter(s,b):find=mid(h(0),2)
    if err then err.clear:find="":exit function
end function


   此帖被 +5 点积分      点击查看详情   
评分人:【 ccwan 分数: +5  时间:2007-8-3 18:42


2007-8-3 18:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Runas
初级用户





积分 74
发帖 38
注册 2007-7-25
状态 离线
『第 8 楼』:  

难道没有len(n)=4的情况了,万一人家是复姓怎么办?

2007-8-3 18:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 9 楼』:  

哈哈,这个想过了,太麻烦~没有处理

2007-8-3 18:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 10 楼』:  

1.bat:
@echo off
    for /f "skip=7 usebackq" %%i in ("%~0") do set "%%i"
    set /p name=输入姓名:
    call echo %%姓氏%name:~0,1%%%%%中字%name:~-2,1%%%%%结字%name:~-1,1%%%
    pause
goto :eof

姓氏=
中字=
结字=
姓氏A=奇门
姓氏B=玄天
姓氏C=日月
姓氏D=毒龙
姓氏E=夜叉
姓氏F=葵花
姓氏G=纯阳
姓氏H=玉女
姓氏J=六合
姓氏K=天罡
姓氏L=天羽
姓氏M=八卦
姓氏N=太乙
姓氏O=落英
姓氏P=鹰蛇
姓氏Q=太极
姓氏R=回风
姓氏S=混沌
姓氏T=乾坤
姓氏W=九天
姓氏X=神门
姓氏Y=百变
姓氏Z=逍遥     
中字A=拂穴
中字B=降魔
中字C=霹雳
中字D=阴阳
中字E=丧门
中字F=真气
中字G=修罗
中字H=碎石
中字J=九九
中字K=绵
中字L=无痕
中字M=两仪
中字N=五神
中字O=穿云
中字P=破玉
中字Q=奇
中字R=迅雷
中字S=伏魔
中字T=游身
中字W=连环
中字X=无形
中字Y=神
中字Z=无双     
结字A=钉
结字B=棒
结字C=掌
结字D=刀
结字E=拳
结字F=掌
结字G=爪
结字H=指
结字J=斧
结字K=钩
结字L=棍
结字M=杖
结字N=鞭
结字O=剑
结字P=镖
结字Q=索
结字R=刀
结字S=拳
结字T=手
结字W=功
结字X=锤
结字Y=枪
结字Z=剑
追求语句的简单,并没有对2字和3字的名字做判断。
2.vbs:
    Dim cls1,cls2,cls3
   
Set cls1 = New Node
Set cls2 = New Node
Set cls3 = New Node

    Call Initialize
    str = Trim(InputBox("请输入你的名字:"))
    Select Case Len(str)
        Case 3
            Execute "strOut=cls1." & Mid(str,1,1) & _
                    "&cls2." & Mid(str,2,1) & _
                    "&cls3." & Mid(str,3,1)
        Case 2
            Execute "strOut=cls1." & Mid(str,1,1) & _
                    "&cls3." & Mid(str,2,1)
        Case Else
            strOut = "你是不是输入的你家小狗的名字啊?"
    End Select
   
    WScript.Echo strOut
   
'*************************************************
Class Node
    Dim a,b,c,d,e,f
    Dim g,h,i,j,k,l
    Dim m,n,o,p,q,r
    Dim s,t,u,v,w,x
    Dim y,z
End Class   

'*************************************************
Sub Initialize

        cls1.A="奇门"
        cls1.B="玄天"
        cls1.C="日月"
        cls1.D="毒龙"
        cls1.E="夜叉"
        cls1.F="葵花"
        cls1.G="纯阳"
        cls1.H="玉女"
        cls1.J="六合"
        cls1.K="天罡"
        cls1.L="天羽"
        cls1.M="八卦"
        cls1.N="太乙"
        cls1.O="落英"
        cls1.P="鹰蛇"
        cls1.Q="太极"
        cls1.R="回风"
        cls1.S="混沌"
        cls1.T="乾坤"
        cls1.W="九天"
        cls1.X="神门"
        cls1.Y="百变"
        cls1.Z="逍遥"

        cls2.A="拂穴"
        cls2.B="降魔"
        cls2.C="霹雳"
        cls2.D="阴阳"
        cls2.E="丧门"
        cls2.F="真气"
        cls2.G="修罗"
        cls2.H="碎石"
        cls2.J="九九"
        cls2.K="绵"
        cls2.L="无痕"
        cls2.M="两仪"
        cls2.N="五神"
        cls2.O="穿云"
        cls2.P="破玉"
        cls2.Q="奇"
        cls2.R="迅雷"
        cls2.S="伏魔"
        cls2.T="游身"
        cls2.W="连环"
        cls2.X="无形"
        cls2.Y="神"
        cls2.Z="无双"

        cls3.A="钉"
        cls3.B="棒"
        cls3.C="掌"
        cls3.D="刀"
        cls3.E="拳"
        cls3.F="掌"
        cls3.G="爪"
        cls3.H="指"
        cls3.J="斧"
        cls3.K="钩"
        cls3.L="棍"
        cls3.M="杖"
        cls3.N="鞭"
        cls3.O="剑"
        cls3.P="镖"
        cls3.Q="索"
        cls3.R="刀"
        cls3.S="拳"
        cls3.T="手"
        cls3.W="功"
        cls3.X="锤"
        cls3.Y="枪"
        cls3.Z="剑"


End Sub
咱好歹也用上了“类”,唉~~

   此帖被 +9 点积分       点击查看详情   
评分人:【 ccwan 分数: +9  时间:2007-8-4 07:46


2007-8-3 20:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 11 楼』:  

3742668兄果然功力深厚啊。



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2007-8-4 07:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: