标题: [系统增强] 记事用批处理 [打印本页]
作者: 523066680 时间: 2010-6-9 21:01 标题: 记事用批处理
工作性质特别,杂事特多,所以就尝试着做一个记事用的批处理,也可以根据编号删除指定记事
主要是用来在命令行里调用的,我的cmd一直是开着的,算是量身定做。
没啥特别的,很久没写了,不取巧。- @echo off
- :::::::::::::::::::::::::::::::::::::::::::::::::
- :: note.bat , code by 523066680@cn-dos.net 20100610
- :: 记事项数限制为0-99,否则出错[为了方便数字排版]
- :: 有help
- :::::::::::::::::::::::::::::::::::::::::::::::::
- ::维护记录:
- ::0611:问题多多,不得兼顾,整个脚本重新编辑....
- ::0612:为了更多操作错误提示,补充了一些判断
- ::0613:增加 help 参数
- ::0615:增加 at 辅助指令,msg指令[结合at的定时提示框]
- ::0722:ch参数,负责修改某条记事
-
- setlocal enabledelayedexpansion
- set notebook="notebook.x"
- set arg_add=read_add
- set arg_ch=read_ch
- set arg_del=read_del
- set arg_edit=edit
- set arg_help=help
- set arg_at=at
- set arg_msg=msg
- set arg_=type
-
- if not exist "%notebook%" (
- echo %notebook% 不存在,将建立
- type nul>>%notebook%
- exit /b
- )
-
- if not defined arg_%1 (
- echo 指令 %1 不存在
- exit /b
- ) else (
- if "!arg_%1!"=="read_%1" (goto :read_it) else (goto :func_%1)
- )
-
- :read_it
- ::如果参数不为空就来到这里,增加项目编号和删除项目,都要先读取文本信息
- ::text format: $number $date $note , range of number : [0-99]
- for /f "tokens=1,2,*" %%a in ('type %notebook%') do (
- set note_info_#%%a=%%b %%c
- set note_lastcode=%%a
- )
- ::继续跳转到功能块
- goto :func_%1
-
- ::区间::act
- :func_
- type %notebook%
- exit /b
-
- :func_edit
- start notepad "%~nx0"
- exit /b
-
- :func_at
- if "%2"=="" (echo 第二项为空 &exit /b)
- for /f "tokens=2,*" %%a in ("%*") do (set note_echo=%%b)
- (echo @echo off
- echo %note_echo%
- echo pause
- echo exit
- )>note_notic.bat
- type note_notic.bat
- at %2 /interactive "%~dp0note_notic.bat"
- exit /b
-
- :func_msg
- if "%2"=="" (echo 第二项为空 &exit /b)
- if "%3"=="" (echo 第三项为空 &exit /b)
- for /f "tokens=2,*" %%a in ("%*") do (set note_echo=%%b)
- at %2 /interactive msg %username% %note_echo%
- at
- exit /b
- ::区间::end
- :func_help
- echo 以下是脚本的参数功能
- echo help 显示帮助
- echo add 增加一个项目,脚本会为您注上日期
- echo del 编号1 [编号2] ...
- echo 删除指定编号的项目,可删除多个项目
- echo 注: 脚本临时的记录是一次性的,若误输入多个相同的项目
- echo 删除的也只是同一个记录,不会误删其他项
- echo ch 编号 [记事信息]
- echo 用第三参数替换指定条目的记事,若第三参数为空则下一句
- echo 在新记事中如果出现$0,表示之前的记事内容。例如 ch 1 原来的句子是: $0
- echo 将会在该项原内容加上前面那句话并保存
- echo at h:m 命令
- echo 在指定的时间执行命令。跟直接at的区别是,帮你加了/interactive 参数。
- echo msg h:m "提示信息"
- echo 在指定时间弹出制定提示信息的提示窗口
- echo edit - 用notepad打开脚本以便维护代码
- exit /b
-
- :func_del
- if "%2"=="" (echo arg2 = NULL &exit /b)
- set note_clear=0
- :del_ing
- if defined note_info_#%2 (
- echo 清理的项: %2 !note_info_#%2!
- set "note_info_#%2="
- set /a note_clear+=1
- ) else (
- echo 不存在 "%2" 这一项,或者这一项已经删除。
- )
- if not "%3"=="" (shift /2 &goto :del_ing)
- if %note_clear% gtr 0 (
- set /a tx=-1
- type nul>%notebook%
- for /l %%a in (0,1,%note_lastcode%) do (
- if not "!note_info_#%%a!"=="" (
- set /a tx+=1
- set txx= !tx!
- (echo !txx:~-2! !note_info_#%%a!)>>%notebook%
- )
- )
- echo _&echo 已经对各项重新编号。
- )
- exit /b
-
- :func_ch
- if "%2"=="" (echo arg2 = NULL &exit /b)
- if not defined note_info_#%2 (
- echo 不存在 "%2" 这一项,或者这一项已经删除。
- exit /b
- )
- echo 修改的项: %2 !note_info_#%2!
- set tmpstr=!note_info_#%2!
- if "%3"=="" (
- set /p note_info_#%2="请输入新的内容:"
- set note_info_#%2=%date:~0,10% !note_info_#%2!
- ) else (
- set note_info_#%2=%date:~0,10% %3
- )
- set note_info_#%2=!note_info_#%2:$0=%tmpstr%!
- type nul>%notebook%
- set /a tx=-1
- for /l %%a in (0,1,%note_lastcode%) do (
- if not "!note_info_#%%a!"=="" (
- set /a tx+=1
- set txx= !tx!
- (echo !txx:~-2! !note_info_#%%a!)>>%notebook%
- )
- )
- type %notebook%
- exit /b
-
- :func_add
- if "%2"=="" (echo 附加信息为空 &exit /b)
- set /a note_lastcode+=1
- set xnum= %note_lastcode%
- set xnum=!xnum:~-2!
- set strnow=%*
- ::::cut string - "add "
- set strnow=%strnow:~4%
- (echo %xnum% %date:~0,10% %strnow%)>>%notebook%
- echo %notebook% 现状 :
- type %notebook%
- 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://bathome.net./) |
Powered by Discuz! 7.2 |