标题: [文本处理] 【貌似是原创】批处理备忘录 [打印本页]
作者: zcydez 时间: 2011-8-6 20:11 标题: 【貌似是原创】批处理备忘录
本帖最后由 zcydez 于 2011-8-6 20:16 编辑
为了“温故而知新”一下for语句,今天编了一个批处理版备忘录。运行后会轮流滚动播出批处理目录下的“显示内容.txt”里的文本。(初次运行会自动生成此文件)在“显示内容.txt”里输入的文本最好为全角字符,比较美观。此文件里的“[date]”代表当前日期,“[time]"标示当前时间。
不知道是不是原创,如果是的话请帮忙移到原创代码,谢谢。- @echo off
- title 批处理备忘录
- mode con:cols=42 lines=2
- if not exist %cd%\显示内容.txt (echo 你好!>显示内容.txt
- echo 欢迎使用!>>显示内容.txt
- echo 现在时间:[time]>>显示内容.txt
- echo 今天日期:[date]>>显示内容.txt
- echo 不错吧?>>显示内容.txt
- echo 这个文本文件可以自己修改>>显示内容.txt
- echo 可以当备忘录!>>显示内容.txt
- echo 为了美观,本文本文件里面必须全是全角字符!>>显示内容.txt
- )
- :begin
- setlocal EnableDelayedExpansion
- for /f %%a in (%cd%\显示内容.txt) do (
- set w=%%a
- for /f "delims=: tokens=1,2" %%t in ("%time%") do (set w=!w:[time]=%%t: %%u!)
- cls
- set w=!w:[date]=%date%!
- set w=!w:/=/!
- set w=!w:1=1!
- set w=!w:2=2!
- set w=!w:3=3!
- set w=!w:4=4!
- set w=!w:5=5!
- set w=!w:6=6!
- set w=!w:7=7!
- set w=!w:8=8!
- set w=!w:9=9!
- set w=!w:0=0!
- set w=!w::=:!
- set output= !w!
- ::这里是调用for算文本字符数(核心部分,也是难点,本来想用直接退出for来完成算字
- ::符数的,但是cmd不让,所以只好用call调用for,当人民需要的时候用goto :eof英勇
- ::献身!
- call :pdzs
- for /l %%c in (0 1 !zs!) do (set output2= !output:~%%c,20%!
- cls
- echo.!output2!
- for /l %%d in (1 1 3) do (ping -n 1 127.0.1>nul)
- ))
- goto begin
- :pdzs
- for /l %%b in (0 1 5000) do (
- if "!output:~%%b,1!"=="" (set zs=%%b&goto :eof))
- :qj
- set qj=0123456789
- goto :eof
复制代码
点击进入下载-批处理备忘录.rar
作者: hanyeguxing 时间: 2011-8-7 09:12
本帖最后由 hanyeguxing 于 2011-8-7 09:31 编辑
没有看完。。。
1,在一个多次循环的循环体内如果使用setlocal,则应在合适的位置执行endlocal以防止超过最大递归层
2,代码需要再优化下,例如时间转换部分就可以直接写成:- set Y=0123456789&set T=%time:~0,2%:%time:~3,2%
- for /l %%a in (0,1,9) do call set T=%%T:%%a=!Y:~%%a,1!%%
复制代码
作者: zcydez 时间: 2011-8-7 11:25
谢谢指导!
作者: zcydez 时间: 2011-8-7 11:25
但是如果时间是1:1怎么办???系统可以设置成这样的。
还是这样保险一点。。。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |