返回列表 发帖

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

此脚本的功能是将中文转换成拼音,做成了类似第三方程序的形式,
可以将汉字转换成全拼或只保留每个汉字拼音的首字母。
附件中是字典,此脚本需要《字典》的支持。
@ECHO OFF
Rem XXXXXXXXXXXXXXXXXXXXXXXX 参数整理 XXXXXXXXXXXXXXXXXXXXXXXX
SET "Parameter=%*"
IF NOT DEFINED Parameter (
  CALL :HELP
  PAUSE 1>NUL
  CALL :EXPORT && EXIT /B 1
) ELSE (
  ECHO [%Parameter%] | FIND /I "?" 1>NUL && ( CALL :HELP && CALL :EXPORT && EXIT /B 1 )
  )
SET "Parameter1="&&SET "Parameter2="&&SET "Parameter3="&&SET "Parameter4="&&SET "Parameter5="
:Parameter
SET "Parameter=%~1"
    REM ECHO 00140-[%Parameter%]
IF NOT DEFINED Parameter GOTO EndParameter
%Parameter1% IF /I "%Parameter:~0,7%" EQU "Chinese" ( SET "Chinese=%Parameter:~8%" && SET "Parameter1=Rem" ) && GOTO IFParameter
%Parameter2% IF /I "%Parameter:~0,6%" EQU "Return" ( SET "Return=%Parameter:~7%" && SET "Parameter2=Rem" ) && GOTO IFParameter
%Parameter3% IF /I "%Parameter:~0,8%" EQU "WordBook" ( SET "WordBook=%Parameter:~9%" && SET "Parameter3=Rem" ) && GOTO IFParameter
%Parameter4% IF /I "%Parameter:~1%" EQU "QP" ( SET "QP=%Parameter:~1%" && SET "Parameter4=Rem" ) && GOTO IFParameter
%Parameter5% IF /I "%Parameter:~1%" EQU "SZ" ( SET "SZ=%Parameter:~1%" && SET "Parameter5=Rem" ) && GOTO IFParameter
ECHO. && CALL :ERROR "%Parameter%" && CALL :EXPORT && EXIT /B 12
:IFParameter
SHIFT /1
GOTO Parameter
:EndParameter
IF DEFINED QP ( IF DEFINED SZ ( CALL :ERROR "QO与SZ不可同时存在" &&CALL :EXPORT && EXIT /B 13 & EXIT /B 13 ) )
::测试时显显示各参数的值
IF 1 LSS 0 (
  ECHO 1.中文字符串 Chinese=%Chinese%
  ECHO 2.输出返回值 Return=%Return%
  ECHO 3.字典路径  WordBook=%WordBook%
  ECHO 4.QP:    [%QP%]
  ECHO 5.SZ:    [%SZ%]
  PAUSE
)
Rem XXXXXXXXXXXXXXXXXXXXXXXX 准备 XXXXXXXXXXXXXXXXXXXXXXXX
Rem 字典路径
:WORDBOOK0
IF EXIST %WORDBOOK% GOTO WORDBOOK1
ECHO.&&ECHO.&&ECHO.&&ECHO.
ECHO.请输入《字典》所在路径:
ECHO.[Q]:退出
ECHO.
SET "WORDBOOK="
SET /P WORDBOOK=
IF /I "%WORDBOOK%" EQU "Q" ( CALL :EXPORT && EXIT /B 1 & EXIT /B 1 )
IF EXIST "%WORDBOOK%" GOTO WORDBOOK1
IF EXIST "%WORDBOOK%.TXT" ( SET "WORDBOOK=%WORDBOOK%.TXT" && GOTO WORDBOOK1 )
ECHO.
CALL :ERROR "输入错误或没有找到字典"
ECHO.
GOTO WORDBOOK0
:WORDBOOK1
Rem XXXXXXXXXXXXXXXXXXXXXXXX 中文转拼音 XXXXXXXXXXXXXXXXXXXXXXXX
IF DEFINED SZ ( SET "REMSZ=" ) ELSE ( SET "REMSZ=REM" )
:StartMain
SET "VARIABLE=%Chinese:~,1%"
IF /I "%VARIABLE%" EQU " " ( SET "OUTPUT= " && GOTO ENDOUTPUT3 )
IF /I "%VARIABLE%" EQU " " ( SET "OUTPUT= " && GOTO ENDOUTPUT3 )
IF NOT DEFINED Chinese GOTO EndMain
FOR /F "EOL=; TOKENS=1,*" %%I IN ( 'TYPE %WORDBOOK%' ) DO (
  IF "%VARIABLE%" EQU "%%~I" (
    SET "OUTPUT=%%~J"
        REM 当条件成立后即退出此 “For %%I” 的循环?
  )
)
IF DEFINED OUTPUT GOTO ENDOUTPUT1
ECHO 在字典中,没有找到“%VARIABLE%”的拼音
ECHO 请手动输入该字的拼音:
ECHO [回车]:跳过
ECHO.
SET "OUTPUT="
SET /P OUTPUT=.  %VARIABLE%
ECHO.
IF NOT DEFINED OUTPUT GOTO ENDOUTPUT3
:ENDOUTPUT1
ECHO [%OUTPUT%] | FIND /I "&" 1>NUL || GOTO ENDOUTPUT2
ECHO.
ECHO 字符串 [ %Chinese% ] 中的“%VARIABLE%”为多音字,
ECHO 请手动输入该字的拼音:
ECHO [回车]:跳过
ECHO.
SET "OUTPUT="
SET /P OUTPUT=.  %VARIABLE%
ECHO.
IF NOT DEFINED OUTPUT GOTO ENDOUTPUT3
:ENDOUTPUT2
%REMSZ% SET "OUTPUT=%OUTPUT:~0,1%"
:ENDOUTPUT3
SET "OPPY=%OPPY%%OUTPUT%"
SET "OUTPUT="
SET "Chinese=%Chinese:~1%"
GOTO StartMain
:EndMain
    REM ECHO -[%OPPY%]-
SET "%Return%=%OPPY%"
    REM ECHO [%Return%][%OPPY%]
CALL :EXPORT
EXIT /B 0
Rem XXXXXXXXXXXXXXXXXXXXXXXX 帮助 XXXXXXXXXXXXXXXXXXXXXXXX
:HELP
ECHO.
ECHO CtoP.bat 汉字转拼音 by Bo (IBM)   [20090424]
ECHO   通过字典(WORDBOOK.txt)查找对应的拼音,
ECHO   用户可以手动修改字典中的拼音
ECHO   支持阿拉伯数字转拼音
ECHO   遇到多音字或字典中未收录的文字,
ECHO   程序会暂停执行,并要求用户手动输入
ECHO.
ECHO 用法:
ECHO %~NX0 "Chinese-String" Return-Variable [WordBook-PATH] [/QP ^| /SZ]
ECHO.
ECHO   参数说明:
ECHO.
ECHO   String: 中文字符串
ECHO   Variable:输出返回值变量
ECHO   PATH:  字典路径
ECHO   /QP:   全拼(默认)
ECHO   /SZ:   简拼(首字母)
ECHO.
ECHO  部分特殊字符及标点不支持 
ECHO.
ECHO.
GOTO :EOF
    REM ERRORLEVEL 0  正常执行转化后退出
    REM ERRORLEVEL 0  正常执行未转化退出
    REM ERRORLEVEL 11  参数不匹配
    REM ERRORLEVEL 12  QP 与 SZ 不可同时存在
Rem XXXXXXXXXXXXXXXXXXXXXXXX 报错 XXXXXXXXXXXXXXXXXXXXXXXX
:ERROR
SET "ERRORNUM=%~1"
ECHO.&&ECHO.
COLOR 0C
ECHO   错误:%ERRORNUM%
ECHO.
PAUSE
ECHO.
COLOR 1F
GOTO :EOF
Rem XXXXXXXXXXXXXXXXXXXXXXXX 出口 XXXXXXXXXXXXXXXXXXXXXXXX
:EXPORT
SET "Parameter="
SET "Parameter1="
SET "Parameter2="
SET "Parameter3="
SET "Parameter4="
SET "Parameter5="
SET "Chinese="
SET "Return="
SET "WordBook="
SET "QP="
SET "SZ="
SET "ERRORNUM="
SET "VARIABLE="
SET "OPPY="
ECHO.&&ECHO.
GOTO :EOFCOPY
链接: https://pan.baidu.com/s/1H6kqbUEzdBtG8kUBafFrtA?pwd=ic4k
链接: https://pan.baidu.com/s/17emTQf_VvOn1TFBM-7OFyg?pwd=9bga
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

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

[ 本帖最后由 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

返回列表