[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理汉字转拼音

此脚本的功能是将中文转换成拼音,做成了类似第三方程序的形式,
可以将汉字转换成全拼或只保留每个汉字拼音的首字母。
附件中是字典,此脚本需要《字典》的支持。
  1. @ECHO OFF
  2. Rem XXXXXXXXXXXXXXXXXXXXXXXX 参数整理 XXXXXXXXXXXXXXXXXXXXXXXX
  3. SET "Parameter=%*"
  4. IF NOT DEFINED Parameter (
  5.   CALL :HELP
  6.   PAUSE 1>NUL
  7.   CALL :EXPORT && EXIT /B 1
  8. ) ELSE (
  9.   ECHO [%Parameter%] | FIND /I "?" 1>NUL && ( CALL :HELP && CALL :EXPORT && EXIT /B 1 )
  10.   )
  11. SET "Parameter1="&&SET "Parameter2="&&SET "Parameter3="&&SET "Parameter4="&&SET "Parameter5="
  12. :Parameter
  13. SET "Parameter=%~1"
  14.     REM ECHO 00140-[%Parameter%]
  15. IF NOT DEFINED Parameter GOTO EndParameter
  16. %Parameter1% IF /I "%Parameter:~0,7%" EQU "Chinese" ( SET "Chinese=%Parameter:~8%" && SET "Parameter1=Rem" ) && GOTO IFParameter
  17. %Parameter2% IF /I "%Parameter:~0,6%" EQU "Return" ( SET "Return=%Parameter:~7%" && SET "Parameter2=Rem" ) && GOTO IFParameter
  18. %Parameter3% IF /I "%Parameter:~0,8%" EQU "WordBook" ( SET "WordBook=%Parameter:~9%" && SET "Parameter3=Rem" ) && GOTO IFParameter
  19. %Parameter4% IF /I "%Parameter:~1%" EQU "QP" ( SET "QP=%Parameter:~1%" && SET "Parameter4=Rem" ) && GOTO IFParameter
  20. %Parameter5% IF /I "%Parameter:~1%" EQU "SZ" ( SET "SZ=%Parameter:~1%" && SET "Parameter5=Rem" ) && GOTO IFParameter
  21. ECHO. && CALL :ERROR "%Parameter%" && CALL :EXPORT && EXIT /B 12
  22. :IFParameter
  23. SHIFT /1
  24. GOTO Parameter
  25. :EndParameter
  26. IF DEFINED QP ( IF DEFINED SZ ( CALL :ERROR "QO与SZ不可同时存在" &&CALL :EXPORT && EXIT /B 13 & EXIT /B 13 ) )
  27. ::测试时显显示各参数的值
  28. IF 1 LSS 0 (
  29.   ECHO 1.中文字符串 Chinese=%Chinese%
  30.   ECHO 2.输出返回值 Return=%Return%
  31.   ECHO 3.字典路径  WordBook=%WordBook%
  32.   ECHO 4.QP:    [%QP%]
  33.   ECHO 5.SZ:    [%SZ%]
  34.   PAUSE
  35. )
  36. Rem XXXXXXXXXXXXXXXXXXXXXXXX 准备 XXXXXXXXXXXXXXXXXXXXXXXX
  37. Rem 字典路径
  38. :WORDBOOK0
  39. IF EXIST %WORDBOOK% GOTO WORDBOOK1
  40. ECHO.&&ECHO.&&ECHO.&&ECHO.
  41. ECHO.请输入《字典》所在路径:
  42. ECHO.[Q]:退出
  43. ECHO.
  44. SET "WORDBOOK="
  45. SET /P WORDBOOK=
  46. IF /I "%WORDBOOK%" EQU "Q" ( CALL :EXPORT && EXIT /B 1 & EXIT /B 1 )
  47. IF EXIST "%WORDBOOK%" GOTO WORDBOOK1
  48. IF EXIST "%WORDBOOK%.TXT" ( SET "WORDBOOK=%WORDBOOK%.TXT" && GOTO WORDBOOK1 )
  49. ECHO.
  50. CALL :ERROR "输入错误或没有找到字典"
  51. ECHO.
  52. GOTO WORDBOOK0
  53. :WORDBOOK1
  54. Rem XXXXXXXXXXXXXXXXXXXXXXXX 中文转拼音 XXXXXXXXXXXXXXXXXXXXXXXX
  55. IF DEFINED SZ ( SET "REMSZ=" ) ELSE ( SET "REMSZ=REM" )
  56. :StartMain
  57. SET "VARIABLE=%Chinese:~,1%"
  58. IF /I "%VARIABLE%" EQU " " ( SET "OUTPUT= " && GOTO ENDOUTPUT3 )
  59. IF /I "%VARIABLE%" EQU " " ( SET "OUTPUT= " && GOTO ENDOUTPUT3 )
  60. IF NOT DEFINED Chinese GOTO EndMain
  61. FOR /F "EOL=; TOKENS=1,*" %%I IN ( 'TYPE %WORDBOOK%' ) DO (
  62.   IF "%VARIABLE%" EQU "%%~I" (
  63.     SET "OUTPUT=%%~J"
  64.         REM 当条件成立后即退出此 “For %%I” 的循环?
  65.   )
  66. )
  67. IF DEFINED OUTPUT GOTO ENDOUTPUT1
  68. ECHO 在字典中,没有找到“%VARIABLE%”的拼音
  69. ECHO 请手动输入该字的拼音:
  70. ECHO [回车]:跳过
  71. ECHO.
  72. SET "OUTPUT="
  73. SET /P OUTPUT=.  %VARIABLE%:
  74. ECHO.
  75. IF NOT DEFINED OUTPUT GOTO ENDOUTPUT3
  76. :ENDOUTPUT1
  77. ECHO [%OUTPUT%] | FIND /I "&" 1>NUL || GOTO ENDOUTPUT2
  78. ECHO.
  79. ECHO 字符串 [ %Chinese% ] 中的“%VARIABLE%”为多音字,
  80. ECHO 请手动输入该字的拼音:
  81. ECHO [回车]:跳过
  82. ECHO.
  83. SET "OUTPUT="
  84. SET /P OUTPUT=.  %VARIABLE%:
  85. ECHO.
  86. IF NOT DEFINED OUTPUT GOTO ENDOUTPUT3
  87. :ENDOUTPUT2
  88. %REMSZ% SET "OUTPUT=%OUTPUT:~0,1%"
  89. :ENDOUTPUT3
  90. SET "OPPY=%OPPY%%OUTPUT%"
  91. SET "OUTPUT="
  92. SET "Chinese=%Chinese:~1%"
  93. GOTO StartMain
  94. :EndMain
  95.     REM ECHO -[%OPPY%]-
  96. SET "%Return%=%OPPY%"
  97.     REM ECHO [%Return%][%OPPY%]
  98. CALL :EXPORT
  99. EXIT /B 0
  100. Rem XXXXXXXXXXXXXXXXXXXXXXXX 帮助 XXXXXXXXXXXXXXXXXXXXXXXX
  101. :HELP
  102. ECHO.
  103. ECHO CtoP.bat 汉字转拼音 by Bo (IBM)   [20090424]
  104. ECHO   通过字典(WORDBOOK.txt)查找对应的拼音,
  105. ECHO   用户可以手动修改字典中的拼音
  106. ECHO   支持阿拉伯数字转拼音
  107. ECHO   遇到多音字或字典中未收录的文字,
  108. ECHO   程序会暂停执行,并要求用户手动输入
  109. ECHO.
  110. ECHO 用法:
  111. ECHO %~NX0 "Chinese-String" Return-Variable [WordBook-PATH] [/QP ^| /SZ]
  112. ECHO.
  113. ECHO   参数说明:
  114. ECHO.
  115. ECHO   String: 中文字符串
  116. ECHO   Variable:输出返回值变量
  117. ECHO   PATH:  字典路径
  118. ECHO   /QP:   全拼(默认)
  119. ECHO   /SZ:   简拼(首字母)
  120. ECHO.
  121. ECHO  部分特殊字符及标点不支持 
  122. ECHO.
  123. ECHO.
  124. GOTO :EOF
  125.     REM ERRORLEVEL 0  正常执行转化后退出
  126.     REM ERRORLEVEL 0  正常执行未转化退出
  127.     REM ERRORLEVEL 11  参数不匹配
  128.     REM ERRORLEVEL 12  QP 与 SZ 不可同时存在
  129. Rem XXXXXXXXXXXXXXXXXXXXXXXX 报错 XXXXXXXXXXXXXXXXXXXXXXXX
  130. :ERROR
  131. SET "ERRORNUM=%~1"
  132. ECHO.&&ECHO.
  133. COLOR 0C
  134. ECHO   错误:%ERRORNUM%
  135. ECHO.
  136. PAUSE
  137. ECHO.
  138. COLOR 1F
  139. GOTO :EOF
  140. Rem XXXXXXXXXXXXXXXXXXXXXXXX 出口 XXXXXXXXXXXXXXXXXXXXXXXX
  141. :EXPORT
  142. SET "Parameter="
  143. SET "Parameter1="
  144. SET "Parameter2="
  145. SET "Parameter3="
  146. SET "Parameter4="
  147. SET "Parameter5="
  148. SET "Chinese="
  149. SET "Return="
  150. SET "WordBook="
  151. SET "QP="
  152. SET "SZ="
  153. SET "ERRORNUM="
  154. SET "VARIABLE="
  155. SET "OPPY="
  156. ECHO.&&ECHO.
  157. GOTO :EOF
复制代码
[ 本帖最后由 ibm 于 2009-4-24 21:05 编辑 ]
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
1

评分人数

CtoP.bat 汉字转拼音 by Bo   [20090424]

请问此代码是楼主原创吗?这个 Bo 是楼主本人吗?

“此脚本需要脚本的支持”,这句话是什么意思呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3楼 的帖子

1,是我原创,
2,Bo即是IBM,是本人
3,“此脚本需要脚本的支持”中的错误以经修改:“此脚本需要《字典》的支持”,

TOP

楼主是不是可以想简单点:
  1. @echo off
  2. set /p input=请输入汉字:
  3. set "input=%input =%"
  4. set "input=%input =%"
  5. :lp
  6. for /f "tokens=2" %%a in ('findstr "%input:~,1%" wordbook.txt') do set /p=%%a <nul
  7. set "input=%input:~1%"&if defined input goto lp
  8. pause>nul
复制代码

[ 本帖最后由 batman 于 2009-4-24 21:20 编辑 ]
***共同提高***

TOP

回复 5楼 的帖子

写成这样复杂,目的是把它制作成一个类似第三方程序的东西,
其它的人可以调用这个脚本,并且得到这个脚本的返回值。

楼上的代码很精精简,值得学习!

TOP

5楼的朋友 你的批处理怎么用?

TOP

不会用啊 能不能给行调用这批处理的命令出来?

TOP

双击后出现如下提示:

CtoP.bat 汉字转拼音 by Bo   [20090424]
  通过字典(WORDBOOK.txt)查找对应的拼音,
  用户可以手动修改字典中的拼音
  支持阿拉伯数字转拼音
  遇到多音字或字典中未收录的文字,
  程序会暂停执行,并要求用户手动输入

用法:
CtoP.bat "Chinese-String" Return-Variable [WordBook-PATH] [/QP | /SZ]

  参数说明:

  String: 中文字符串
  Variable:输出返回值变量
  PATH:  字典路径
  /QP:   全拼(默认)
  /SZ:   简拼(首字母)

 部分特殊字符及标点不支持 


用法和参数麻烦楼主能举个实例说明一下吗?3Q!

TOP

新人,学习中

TOP

谢谢你的分享

TOP

这个看着很高大上啊

TOP

CrLf
4 字节

TOP

不错 谢谢了

TOP

谢谢大家的指点,学习……

TOP

请问大神在吗?我刚才运行还是不能出结果啊

TOP

返回列表