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

[文本处理] 【貌似是原创】批处理备忘录

本帖最后由 zcydez 于 2011-8-6 20:16 编辑

为了“温故而知新”一下for语句,今天编了一个批处理版备忘录。运行后会轮流滚动播出批处理目录下的“显示内容.txt”里的文本。(初次运行会自动生成此文件)在“显示内容.txt”里输入的文本最好为全角字符,比较美观。此文件里的“[date]”代表当前日期,“[time]"标示当前时间。
不知道是不是原创,如果是的话请帮忙移到原创代码,谢谢。
  1. @echo off
  2. title 批处理备忘录
  3. mode con:cols=42 lines=2
  4. if not exist %cd%\显示内容.txt (echo 你好!>显示内容.txt
  5. echo 欢迎使用!>>显示内容.txt
  6. echo 现在时间:[time]>>显示内容.txt
  7. echo 今天日期:[date]>>显示内容.txt
  8. echo 不错吧?>>显示内容.txt
  9. echo 这个文本文件可以自己修改>>显示内容.txt
  10. echo 可以当备忘录!>>显示内容.txt
  11. echo 为了美观,本文本文件里面必须全是全角字符!>>显示内容.txt
  12. )
  13. :begin
  14. setlocal EnableDelayedExpansion
  15. for /f %%a in (%cd%\显示内容.txt) do (
  16. set w=%%a
  17. for /f "delims=: tokens=1,2" %%t in ("%time%") do (set w=!w:[time]=%%t: %%u!)
  18. cls
  19. set w=!w:[date]=%date%!
  20. set w=!w:/=/!
  21. set w=!w:1=1!
  22. set w=!w:2=2!
  23. set w=!w:3=3!
  24. set w=!w:4=4!
  25. set w=!w:5=5!
  26. set w=!w:6=6!
  27. set w=!w:7=7!
  28. set w=!w:8=8!
  29. set w=!w:9=9!
  30. set w=!w:0=0!
  31. set w=!w::=:!
  32. set output=                    !w!
  33. ::这里是调用for算文本字符数(核心部分,也是难点,本来想用直接退出for来完成算字
  34. ::符数的,但是cmd不让,所以只好用call调用for,当人民需要的时候用goto :eof英勇
  35. ::献身!
  36. call :pdzs
  37. for /l %%c in (0 1 !zs!) do (set output2= !output:~%%c,20%!
  38. cls
  39. echo.!output2!
  40. for /l %%d in (1 1 3) do (ping -n 1 127.0.1>nul)
  41. ))
  42. goto begin
  43. :pdzs
  44. for /l %%b in (0 1 5000) do (
  45. if "!output:~%%b,1!"=="" (set zs=%%b&goto :eof))
  46. :qj
  47. set qj=0123456789
  48. goto :eof
复制代码
点击进入下载-批处理备忘录.rar

本帖最后由 hanyeguxing 于 2011-8-7 09:31 编辑

没有看完。。。
1,在一个多次循环的循环体内如果使用setlocal,则应在合适的位置执行endlocal以防止超过最大递归层
2,代码需要再优化下,例如时间转换部分就可以直接写成:
  1. set Y=0123456789&set T=%time:~0,2%:%time:~3,2%
  2. for /l %%a in (0,1,9) do call set T=%%T:%%a=!Y:~%%a,1!%%
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

谢谢指导!

TOP

但是如果时间是1:1怎么办???系统可以设置成这样的。
还是这样保险一点。。。

TOP

返回列表