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

[文本处理] 批处理让输出的字符串居中(英文)

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set colsnum=70
  4. set linesnum=22
  5. MODE con: COLS=%colsnum% lines=%linesnum%
  6. ::首先将行数和列数都用变量表示
  7. title  Driver Initial
  8. color 3F
  9. cls
  10. set/a colsnum=%colsnum%-5
  11. ::echo以及其后的空格共占5列
  12. set myecho=Driver Initial
  13. ::将你要输出的字符串赋值给变量myecho
  14. set flag=0
  15. ::初始化计数器flag
  16. for /l %%i in (0,1,1000) do (
  17. set tt=!myecho:~%%i,1!
  18. if "!tt!" equ "" goto next
  19. set/a flag=!flag!+1
  20. )
  21. ::统计你输入的字符串长度
  22. :next
  23. set/a colsnum=!colsnum!-!flag!
  24. set/a colsnum=!colsnum!/2
  25. for /l %%i in (1,1,!colsnum!) do (
  26. set space= !space!
  27. )
  28. ::得到字符串前面的n个空格
  29. echo.
  30. echo          ----------------------------------------------
  31. echo !space!%myecho%
  32. echo          ----------------------------------------------
  33. echo.
  34. echo 操作完毕,按任意键退出...
  35. pause>nul
  36. exit
复制代码

建议发代码时,用code把代码扩起来
具体使用方法如下:
http://youxi01.vip2.92idc.com/vi ... &extra=page%3D1
技术问题请到论坛发帖求助!

TOP

我也来个全角版的:
  1. @echo off
  2. title code by somebody
  3. color 0b
  4. cls
  5. echo.
  6. :: →→→→→→→→→→→→→ Loading The Program ←←←←←←←←←←
  7. setlocal EnableDelayedExpansion
  8. (set,=Loading the program, please wait a minute&for /l %%c In (0,1,42)do @call set/p=%%,:~%%c,1%%<nul)&set,=&ping -n 2 127.1>nul&set/p="."<nul&ping -n 2 127.1>nul&set/p="."<nul&ping -n 2 127.1>nul&set/P="."<nul&ping -n 2 127.1>nul
  9. cls
  10. echo.
  11. set/p=                                  Loading <nul
  12. for /l %%s in (1,1,15) do (
  13.     set/p="-"<nul
  14.     for /l %%i in (1,1,100) do ver>nul
  15.     set/p=<nul
  16.     for /l %%i in (1,1,100) do ver>nul
  17.     set/p="\"<nul
  18.     for /l %%i in (1,1,100) do ver>nul
  19.     set/p=<nul
  20.     for /l %%i in (1,1,100) do ver>nul
  21.     set/p="|"<nul
  22.     for /l %%i in (1,1,100) do ver>nul
  23.     set/p=<nul
  24.     for /l %%i in (1,1,100) do ver>nul
  25.     set/p="/"<nul
  26.     for /l %%i in (1,1,100) do ver>nul
  27.     set/p=<nul
  28.     for /l %%i in (1,1,100) do ver>nul
  29. )
  30. cls
  31. set num=20
  32. set a==
  33. set n=1
  34. for /l %%i in (1,1,80) do (
  35. cls
  36. set /a num+=1
  37. echo                                       !num!%%
  38. echo !a!
  39. set a=!a!=
  40. set /a n+=1
  41. for /l %%j in (1,1,150) do ver>nul
  42. )
  43. ping -n 1 127.1 >nul 2>nul
  44. echo                                 Loading Complete
  45. ping -n 2 127.1 >nul 2>nul
  46. endlocal
  47. cls
  48. setlocal EnableDelayedExpansion
  49. rem  每一行的字符串最长是34个中文字符,或者68个英文字符,不可以包含空格。
  50. rem  不可以混合使用半角和全角字符。只接受中文或者全角字符(即双字节字符)或者英文字符(即单字节字符)
  51. set "str1=超级版主:SOMEBODY"
  52. set "str2=积分:八二八"
  53. set "str3=VB币:八一五枚 "
  54. set "str4=好评:十二度"
  55. set "str5=威望:二十一点"
  56. set /a num=1
  57. for %%a in (%str1%,%str2%,%str3%,%str4%,%str5%) do (   
  58.     setlocal EnableDelayedExpansion
  59.         set /a count=0
  60.         set blank=
  61.         set "b=%%a"
  62.     for /l %%k in (0,1,68) do if not "!b:~%%k,1!"=="" set /a count+=1
  63.         rem  处理纯半角字符串,则以下的 count 不需要乘以2
  64.     set /a "total=(70-!count!*2)/2"
  65.     for /l %%i in (1,1,!total!) do set "blank=!blank! "
  66.     set "final=│!blank!!b!!blank!│"
  67.     set newstr!num!=!final!
  68.         set /a num+=1
  69. )
  70. :print
  71. setlocal EnableDelayedExpansion
  72. set a=┌───────────────────────────────────┐
  73. set "b=%newstr1%"
  74. set c=├───────────────────────────────────┤
  75. set "d=%newstr2%"
  76. set e=├───────────────────────────────────┤
  77. set "f=%newstr3%"
  78. set g=├───────────────────────────────────┤
  79. set "h=%newstr4%"
  80. set i=├───────────────────────────────────┤
  81. set "j=%newstr5%"
  82. set k=└───────────────────────────────────┘
  83. for %%i in (a b c d e f g h i j k) do (
  84.         set/p=   <nul
  85.         for /l %%a in (0,1,100) do (
  86.                 if not "!%%i:~%%a,1!"=="" (
  87.                         if %%a==100 echo.&echo;
  88.                         set/p=!%%i:~%%a,1!<nul
  89.                         for /l %%i in (1,1,50) do ver>nul
  90.                 )
  91.         )
  92.         echo.
  93. )
  94. pause
复制代码
Software is like sex: it's better when it's free..!

TOP

返回列表