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

[文本处理] 文字金字塔

本帖最后由 bbaa 于 2017-6-11 17:43 编辑

感谢大佬捧场

欢迎简化
(算讨论吧.......)
  1. @Echo off
  2. setlocal enabledelayedexpansion
  3. REM Made By:Bbaa
  4. set "space=                                                                                                                                                                                                                                                                                                                        "
  5. If "%~1"=="" (
  6. For %%i in (
  7. ""
  8. "文字金字塔无聊之作"
  9. "jzt_ <text> [English/Chinese](全中文还是汉字) [/q] 不显示过程 [/r 自动调整窗口]"
  10.        )  do Echo;%%~i
  11. exit /b
  12. )
  13. :Begin
  14. Rem =================检测部分=================
  15. set WZ=
  16. set "Text=%~1"
  17. If /i "%~2"=="English" set WZ=English
  18. If /i "%~2"=="Chinese" set WZ=Chinese
  19. If /i "%~2"=="/q" set xs=Rem
  20. If /i "%~3"=="/q" set xs=Rem
  21. If /i "%~4"=="/q" set xs=Rem
  22. If /i "%~2"=="/r" set "Tz=call :TZCK"
  23. If /i "%~3"=="/r" set "Tz=call :TZCK"
  24. If /i "%~3"=="/r" set "Tz=call :TZCK"
  25. If /i "%~4"=="/r" set "Tz=call :TZCK"
  26. call :Zspd !Text!
  27. set zjs=%errorlevel%
  28. if defined WZ (
  29. if "!WZ!"=="English" (Goto Jzt_Pd_yw)
  30. if "!WZ!"=="Chinese" (Goto Jzt_js)
  31. ) else (
  32. Goto Jzt_Pd
  33. Goto :EOF
  34. )
  35. Exit /b
  36. :Jzt_Pd
  37. %Xs% Title =================检测文字是否为纯中英文=================
  38. set AlphaBet=ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789
  39. set gxr=1
  40. set "Text_tmp=!Text!"
  41. :Jzt_Pd_Loop1
  42. %Xs% Title =================检测文字是否为纯中英文-过程1=================
  43. If Not "!Text_tmp!"=="" (
  44. Set "Text_tmp_1=!Text_tmp:~0,1!"
  45. Set "Text_tmp=!Text_tmp:~1!"
  46. set r=0
  47. Set "AlphaBet_tmp=!AlphaBet!"
  48. call :Jzt_Pd_Pd1 !Text_tmp_1!
  49. set /a gxr+=1
  50. if !r!==0 (if defined dp (set dp=!dp!2) else set dp=2)
  51. Goto Jzt_Pd_Loop1
  52. )
  53. Goto Jzt_Pd_ZYF
  54. :Jzt_Pd_Pd1
  55. %Xs% Title =================检测文字是否为纯中英文-过程!gxr!\!zjs!-判断!AlphaBet_tmp!=================
  56. set tre=%~1
  57. If Not "!AlphaBet_tmp!"=="" (
  58. set "AlphaBet_tmp_1=!AlphaBet_tmp:~0,1!"
  59. Set "AlphaBet_tmp=!AlphaBet_tmp:~1!"
  60. If /i "!tre!"=="!AlphaBet_tmp_1!" (Call :Jzt_yw)
  61. GOTO :Jzt_Pd_Pd1
  62. )
  63. Goto :Eof
  64. :Jzt_yw
  65. set r=1
  66. if defined dp (set dp=!dp!1) else set dp=1
  67. GOto :Eof
  68. :Jzt_Pd_ZYF
  69. %Xs% Title =================中英文验证=================
  70. set Jzt_Pd_y=!dp:~0,1!
  71. if !Jzt_PD_y!==1 Goto Jzt_Pd_ZYF_y
  72. if !Jzt_PD_y!==2 Goto Jzt_Pd_ZYF_z
  73. exit /b
  74. :Jzt_Pd_ZYF_y
  75. if not "!dp!"=="" (
  76. set dp_1=!dp:~0,1!
  77. set dp=!dp:~1!
  78. if !dp_1!==2 (Call :Error 非纯中英文&exit/b)
  79. Goto :Jzt_Pd_ZYF_y
  80. )
  81. set WZ=English
  82. Goto Jzt_Pd_Yw
  83. :Jzt_Pd_ZYF_z
  84. if not "!dp!"=="" (
  85. set dp_1=!dp:~0,1!
  86. set dp=!dp:~1!
  87. if !dp_1!==1 (Call :Error 非纯中英文&exit /b)
  88. Goto :Jzt_Pd_ZYF_z
  89. )
  90. set WZ=Chinese
  91. Goto Jzt_js
  92. :Jzt_js
  93. set "Text_tmp=!Text!"
  94. set jzt_jsq=0
  95. :Jzt_js.loop
  96. %Xs% Title =================中文奇数验证=================
  97. If Not "!Text_tmp!"=="" (
  98. set /a Jzt_jsq+=1
  99. Set "Text_tmp=!Text_tmp:~1!"
  100. Goto :Jzt_js.loop
  101. )
  102. if not !Jzt_jsq! gtr 1 (call :Error 中文数量必须大于1&exit/b)
  103. set /a Jzt_erPd=!Jzt_jsq!%%2
  104. Rem echo !Jzt_erPd!;!Jzt_jsq!
  105. if not !Jzt_erPd!==1 (Call :Error 中文数量必须为奇数&exit/b)
  106. Goto Jzt_PB
  107. :Jzt_Pd_Yw
  108. %Xs% Title =================英文字数验证=================
  109. set "Text_tmp=!Text!"
  110. :Jzt_Pd_Yw_loop
  111. If Not "!Text_tmp!"=="" (
  112. set /a Jzt_jsq+=1
  113. Set "Text_tmp=!Text_tmp:~1!"
  114. Goto :Jzt_Pd_Yw_loop
  115. )
  116. set /a Jzt_erPd=!Jzt_jsq!%%2
  117. if !Jzt_erPd!==0 (set jw=2) else set jw=1
  118. goto Jzt_PB
  119. :jzt_PB
  120. %Xs% Title =================中文英文再次验证=================
  121. if "!WZ!"=="English" (Goto Jzt_PB_yw)
  122. if "!WZ!"=="Chinese" (Goto Jzt_PB_ZW)
  123. Exit /b
  124. :Jzt_PB_ZW
  125. %Tz%
  126. set "Text_tmp=!Text!"
  127. set /a line=!zjs!/2
  128. :Jzt_PB_ZW_Tj
  129. Set JSRR=1
  130. %xs% Title 生成中 进度 !JSRR!/!line!
  131. set "Text_tmp_1=!Text_tmp!"
  132. :JZT_SC_ZW
  133. Call :ZSPD !Text_tmp!
  134. Set zjs=!Errorlevel!
  135. Set zjst=!Errorlevel!
  136. Set HXS=1
  137. Rem echo !zjs!
  138. Set /a ZZS=!zjs!/2*2
  139. :JZT_SC_ZW_1
  140. Rem 过程1
  141. Set "Text_tmp_1=!Text_tmp:~%ZZS%,%HXS%!"
  142. Set /a JSRR+=1
  143. %xs% Title 生成中 进度 !JSRR!/!line!
  144. Call :Jzt_PB_ZW_Tj_CL
  145. Set /a ZZS-=2
  146. Set /a HXS+=2
  147. If Not !ZZS! Leq 0 (Goto :JZT_SC_ZW_1) else (Echo !Text_tmp!)
  148. Goto :Eof
  149. :Jzt_PB_ZW_Tj_CL
  150. set /a sp=%zzs%
  151. echo !SPACE:~-%sp%!!Text_tmp_1!
  152. Goto :EOF
  153. :Jzt_PB_yw
  154. echo 暂不支持英文
  155. Goto :Eof
  156. :Error
  157. set /a sd=%random%%%9999+1000
  158. set /a sd1=%random%%%99+10
  159. Echo;Error:0x!sd!!sd1! %~1
  160. exit /b
  161. :Zspd
  162. set "ZSPD_TMP=%~1"
  163. set zspd=
  164. :ZSPD_TMP
  165. If Not "!ZSPD_TMP!"=="" (
  166. set /a ZSPD+=1
  167. Set "ZSPD_tmp=!ZSPD_tmp:~1!"
  168. Goto :ZSPD_TMP
  169. )
  170. set errorlevel=!Zspd!
  171. Goto :eof
  172. :TZCK
  173. if "!WZ!"=="Chinese" (Goto :TZCK_Chinese)
  174. Goto :Eof
  175. :TZCK_Chinese
  176. cls
  177. set /a line=!zjs!/2+8
  178. set /a cols=!zjs!*2
  179. mode con lines=%line% cols=!cols!
  180. Goto :Eof
复制代码
保存到 “jzt_.bat” (扔到Path目录
欢迎各路大神简化(效率优化 Updated Last 03.16.17 23:16:09.14)
1

评分人数

可以的,前排支持

TOP

原创版块设置级别限制的主要目的是让大家多发布实用代码,减少“蛋疼作品”,望理解。
1

评分人数

    • bbaa: 谢谢同志提醒!技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

ddddddddddddddddd

TOP

返回列表