Board logo

标题: [系统增强] 记事用批处理 [打印本页]

作者: 523066680    时间: 2010-6-9 21:01     标题: 记事用批处理

工作性质特别,杂事特多,所以就尝试着做一个记事用的批处理,也可以根据编号删除指定记事
主要是用来在命令行里调用的,我的cmd一直是开着的,算是量身定做。

没啥特别的,很久没写了,不取巧。
  1. @echo off
  2. :::::::::::::::::::::::::::::::::::::::::::::::::
  3. :: note.bat , code by 523066680@cn-dos.net 20100610
  4. :: 记事项数限制为0-99,否则出错[为了方便数字排版]
  5. :: 有help
  6. :::::::::::::::::::::::::::::::::::::::::::::::::
  7. ::维护记录:
  8. ::0611:问题多多,不得兼顾,整个脚本重新编辑....
  9. ::0612:为了更多操作错误提示,补充了一些判断
  10. ::0613:增加 help 参数
  11. ::0615:增加 at 辅助指令,msg指令[结合at的定时提示框]
  12. ::0722:ch参数,负责修改某条记事
  13. setlocal enabledelayedexpansion
  14. set notebook="notebook.x"
  15. set arg_add=read_add
  16. set arg_ch=read_ch
  17. set arg_del=read_del
  18. set arg_edit=edit
  19. set arg_help=help
  20. set arg_at=at
  21. set arg_msg=msg
  22. set arg_=type
  23. if not exist "%notebook%" (
  24.    echo %notebook% 不存在,将建立
  25.    type nul>>%notebook%
  26.    exit /b
  27. )
  28. if not defined arg_%1 (
  29.    echo 指令 %1 不存在
  30.    exit /b
  31. ) else (
  32.    if "!arg_%1!"=="read_%1" (goto :read_it) else (goto :func_%1)
  33. )
  34. :read_it
  35. ::如果参数不为空就来到这里,增加项目编号和删除项目,都要先读取文本信息
  36. ::text format: $number $date $note , range of number : [0-99]
  37. for /f "tokens=1,2,*" %%a in ('type %notebook%') do (
  38.    set note_info_#%%a=%%b %%c
  39.    set note_lastcode=%%a
  40. )
  41. ::继续跳转到功能块
  42. goto :func_%1
  43. ::区间::act
  44. :func_
  45.   type %notebook%
  46.   exit /b
  47. :func_edit
  48.   start notepad "%~nx0"
  49.   exit /b
  50. :func_at
  51.   if "%2"=="" (echo 第二项为空 &exit /b)
  52.   for /f "tokens=2,*" %%a in ("%*") do (set note_echo=%%b)
  53.   (echo @echo off
  54.    echo %note_echo%
  55.    echo pause
  56.    echo exit
  57.   )>note_notic.bat
  58.   type note_notic.bat
  59.   at %2 /interactive "%~dp0note_notic.bat"
  60.   exit /b
  61. :func_msg
  62.   if "%2"=="" (echo 第二项为空 &exit /b)
  63.   if "%3"=="" (echo 第三项为空 &exit /b)
  64.   for /f "tokens=2,*" %%a in ("%*") do (set note_echo=%%b)
  65.   at %2 /interactive msg %username% %note_echo%
  66.   at
  67.   exit /b
  68. ::区间::end
  69. :func_help
  70. echo 以下是脚本的参数功能
  71. echo help  显示帮助
  72. echo add   增加一个项目,脚本会为您注上日期
  73. echo del   编号1 [编号2] ...
  74. echo       删除指定编号的项目,可删除多个项目
  75. echo       注: 脚本临时的记录是一次性的,若误输入多个相同的项目
  76. echo           删除的也只是同一个记录,不会误删其他项
  77. echo ch 编号 [记事信息]
  78. echo       用第三参数替换指定条目的记事,若第三参数为空则下一句
  79. echo       在新记事中如果出现$0,表示之前的记事内容。例如 ch 1 原来的句子是: $0  
  80. echo       将会在该项原内容加上前面那句话并保存
  81. echo at  h:m 命令   
  82. echo        在指定的时间执行命令。跟直接at的区别是,帮你加了/interactive 参数。
  83. echo msg h:m "提示信息"
  84. echo        在指定时间弹出制定提示信息的提示窗口  
  85. echo edit - 用notepad打开脚本以便维护代码
  86. exit /b
  87. :func_del
  88.   if "%2"=="" (echo arg2 = NULL &exit /b)
  89.   set note_clear=0
  90.   :del_ing
  91.     if defined note_info_#%2 (
  92.        echo 清理的项: %2 !note_info_#%2!
  93.        set "note_info_#%2="
  94.        set /a note_clear+=1
  95.     ) else (
  96.        echo 不存在 "%2" 这一项,或者这一项已经删除。
  97.     )
  98.    if not "%3"=="" (shift /2 &goto :del_ing)
  99.    if %note_clear% gtr 0 (
  100.       set /a tx=-1
  101.       type nul>%notebook%
  102.       for /l %%a in (0,1,%note_lastcode%) do (
  103.         if not "!note_info_#%%a!"=="" (
  104.           set /a tx+=1
  105.           set txx=  !tx!
  106.           (echo !txx:~-2! !note_info_#%%a!)>>%notebook%
  107.         )
  108.       )
  109.       echo _&echo 已经对各项重新编号。
  110.    )
  111.    exit /b
  112. :func_ch
  113.   if "%2"=="" (echo arg2 = NULL &exit /b)
  114.   if not defined note_info_#%2 (
  115.       echo 不存在 "%2" 这一项,或者这一项已经删除。
  116.       exit /b
  117.   )
  118.   echo 修改的项: %2 !note_info_#%2!
  119.   set tmpstr=!note_info_#%2!
  120.   if "%3"=="" (
  121.      set /p note_info_#%2="请输入新的内容:"
  122.      set note_info_#%2=%date:~0,10% !note_info_#%2!
  123.   ) else (
  124.      set note_info_#%2=%date:~0,10% %3
  125.   )
  126.   set note_info_#%2=!note_info_#%2:$0=%tmpstr%!
  127.   type nul>%notebook%
  128.   set /a tx=-1
  129.   for /l %%a in (0,1,%note_lastcode%) do (
  130.       if not "!note_info_#%%a!"=="" (
  131.         set /a tx+=1
  132.         set txx=  !tx!
  133.         (echo !txx:~-2! !note_info_#%%a!)>>%notebook%
  134.       )
  135.   )
  136.   type %notebook%
  137.   exit /b
  138. :func_add
  139.    if "%2"=="" (echo 附加信息为空 &exit /b)
  140.    set /a note_lastcode+=1
  141.    set xnum=  %note_lastcode%
  142.    set xnum=!xnum:~-2!
  143.    set strnow=%*
  144.    ::::cut string - "add "
  145.    set strnow=%strnow:~4%
  146.    (echo %xnum% %date:~0,10% %strnow%)>>%notebook%
  147.    echo %notebook% 现状 :
  148.    type %notebook%
  149.    exit /b
复制代码
测试:

  Quote:
c:\test>note add 这是个测试项
notebook.x 现状 :

0 2010-06-08 快递代收货款未到
1 2010-06-08 物料未清点
2 2010-06-09 制作一份供应商地址电话信息表
3 2010-06-09 这是个测试项

c:\test>note del 1 2
删除项 - 1 2010-06-08 物料未清点
删除项 - 2 2010-06-09 制作一份供应商地址电话信息表
notebook.x 重新排列 , 现状 :

0 2010-06-08 快递代收货款未到
1 2010-06-09 这是个测试项

c:\test>

作者: netbenton    时间: 2010-6-9 22:44

不错的~~我支持,早就写个工作用的BAT了,可是一直没有起动,有人起义,我太支持了~~~IF_EXIST 如果可以,请继续把它做强、做大、做完善、做成一个软件~~

[ 本帖最后由 netbenton 于 2010-6-9 22:50 编辑 ]
作者: 523066680    时间: 2010-6-10 13:00

哈 有在酝酿周期性的记事处理,或者定期提示的(话说也许可以用at命令搞,不过语法不习惯吧),雏形还没想好。

这个记事是单纯的临时记事。
刚刚发现BUG了,del一个项目后重新排列,导致10 11 12 项都跑到前面去了,
因为set 列出项排序的关系吧,“意外”示例: 1,10,11,12,13,2,3,4.....
整顿中
作者: 523066680    时间: 2010-6-12 17:33

原帖由 523066680 于 2010-6-12 08:34 发表
:::::::::::::::::::::::::::::::::::::::::::::::::
::维护记录:
::0611:问题多多,不得兼顾,整个脚本重新编辑....
::0612:为了更多操作错误提示,补充了一些判断



郁闷死啦郁闷死啦........  后来就没人鸟啦。
这么鸟的东西,早知道默默在cn-dos日志下鼓捣。>_< ~~
准备增加周期事件定时加入记事项,直到你del 去该项,表示周期事件已经完成~
这样月结的那些繁琐事情就有个东西提醒了。

[ 本帖最后由 523066680 于 2010-6-12 17:37 编辑 ]
作者: Seter    时间: 2010-6-12 19:25

EXIST你这个作品和上一个隔了几年?
作者: 523066680    时间: 2010-6-12 20:58     标题: 回复 7楼 的帖子

忘啦忘啦,后来全用来做公事,写的东西一点创意都没有。
后来跑去opengl了  ,opengl...... 中间的时间全都是在打基础,几个星期一个作品。




看了下,约莫半年
发表于 2010-1-26 21:20
http://www.bathome.net/viewthread.php?tid=7069

[ 本帖最后由 523066680 于 2010-6-12 21:03 编辑 ]
作者: 523066680    时间: 2010-6-13 09:37

即使很少人鸟,继续维护
(喂喂,加分的是不是安慰用的.......)

:::::::::::::::::::::::::::::::::::::::::::::::::
::维护记录:
::0611:问题多多,不得兼顾,整个脚本重新编辑....
::0612:为了更多操作错误提示,补充了一些判断
::0613:增加 help 参数
::0615:增加 at 辅助指令,msg指令[结合at的定时提示框]

msg 结合了at  并帮你加上/interactive 参数。这样就方便定时提醒了

[ 本帖最后由 523066680 于 2010-6-21 16:40 编辑 ]
作者: netbenton    时间: 2010-6-21 20:23

我想最好是一开机运行一次,把该提醒的提醒下,
作者: 523066680    时间: 2010-6-21 21:09     标题: 回复 8楼 的帖子

嘛,链接到启动目录,空参数为直接显示记事项。(ˇˍˇ)
想着有些周期事件定期提示,不过也许at 一下就行了。
作者: cjiabing    时间: 2010-10-12 22:01

goto
支持一个,有空试试看!~
作者: jikea    时间: 2010-11-13 07:37

我用了一下和系统自带的一样,要不是调用系统的话那真的很牛??!!!!!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2