工作性质特别,杂事特多,所以就尝试着做一个记事用的批处理,也可以根据编号删除指定记事
主要是用来在命令行里调用的,我的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> |
|
|