|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
   『楼 主』:
批处理:通讯录
看了 zouzhxi DOS版的通讯录,有了部分构思:
20 楼最新修改:
11-20修改:采用模块方式减少相同功能脚本,增加联系人是否存在判断功能,修改单项结尾、查看全部联系人检索方式
namejm 版主的查找显示(修改了单项结尾检索方式): @echo off
:: 要求词库的格式是:单词独占一行(不区分大小写);
:: 翻译的内容另起一行(不允许出现纯字母行),可以有多行。
:begin
cls
set input=
set line=
set /p input=请输入要查找的单词(要退出请直接回车):
if not defined input exit
for /f "tokens=1* delims=:" %%i in ('findstr /nirc:"^%input%" Tel.db') do (if /i "%%j"=="%input%" set line=%%i)
if not "%line%"=="" (goto display) else (
echo _________________________________
echo.
echo 没有找到 %input% 的记录
echo _________________________________
echo.
pause
goto begin)
:display
echo _________________________________
echo.
echo %input%:
for /f "skip=%line% delims=" %%i in (Tel.db) do (
if "%%i"=="::" goto end
echo %%i
)
:end
echo _________________________________
echo.
pause
goto begin
删除某项记录的批处理 @echo off
echo.
set /p 删除人员= 删除人员:
>TelN.db echo ::电话本数据库
>>TelN.db echo --------------------------------------------------
>>TelN.db echo.
setlocal EnableDelayedExpansion
for /f "delims=" %%i in (Tel.db) do (
if "%%i" == "::" set /a Num+=1
)
set Delete=echo
for /f "skip=3 delims=" %%i in (Tel.db) do (
if "%%i" == "%删除人员%" set Delete=rem&&set /a N-=1
!Delete! %%i>>TelN.db
if "%%i" == "::" !Delete!.>>TelN.db&&set /a N+=1&&cls&&echo.&&echo !N!/%Num%&&set Delete=echo
)
pause
del Tel.db
ren TelN.db Tel.db
exit
Tel.db 电话本数据库 ::电话本数据库
--------------------------------------------------
张三
联系人姓名:张三
联系人电话:张三
联系人地址:张三
联系人单位:张三
::
李四
联系人姓名:李四
联系人电话:李四
联系人地址:李四
联系人单位:李四
::
王五
联系人姓名:王五
联系人电话:王五
联系人地址:王五
联系人单位:王五
::
新增单项 set 联系人姓名=
set 联系人电话=
set 联系人单位=
set 联系人地址=
set...
set /p 联系人姓名=联系人姓名:
set /p 联系人电话=联系人电话:
set /p 联系人地址=联系人单位:
set /p 联系人单位=联系人地址:
set /p...
>>Tel.db echo %联系人姓名%
>>Tel.db echo 联系人姓名:%联系人姓名%
>>Tel.db echo 联系人电话:%联系人电话%
if not "%联系人单位%"=="" >>Tel.db echo 联系人单位:%联系人单位%
if not "%联系人地址%"=="" >>Tel.db echo 联系人地址:%联系人地址%
if...
>>Tel.db echo ::
>>Tel.db echo.
[ Last edited by zxcv on 2006-11-21 at 03:20 AM ]
此帖被 +7 点积分 点击查看详情 评分人:【 redtek 】 | 分数: +5 | 时间:2006-11-16 00:48 | 评分人:【 ccwan 】 | 分数: +2 | 时间:2006-11-16 01:39 |
|
|
|
2006-11-16 00:14 |
|
|
ccwan
金牌会员
     
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
2 楼』:
set 联系人姓名
set 联系人电话
set 联系人单位
set 联系人地址
环境变量没有定义,貌似应为
set 联系人姓名=
set 联系人电话=
set 联系人单位=
set 联系人地址=
不过做得很不错,值得加分。
|

三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2006-11-16 01:39 |
|
|
ccwan
金牌会员
     
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
3 楼』:
建议再加入全部浏览的命令,因为我就比较喜欢全部显示后再从中查找。
|

三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2006-11-16 01:45 |
|
|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
『第
4 楼』:
Originally posted by ccwan at 2006-11-15 13:39:
set 联系人姓名
set 联系人电话
set 联系人单位
set 联系人地址
环境变量没有定义,貌似应为
set 联系人姓名=
set 联系人电话=
set 联系人单位= ... 漏了^_^,谢谢指正 Originally posted by ccwan at 2006-11-15 13:45:
建议再加入全部浏览的命令,因为我就比较喜欢全部显示后再从中查找。 简单啊,加入一个选项跳转执行“notepad Tel.db”,直接浏览库文件^_^
|
|
2006-11-16 01:56 |
|
|
ccwan
金牌会员
     
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
5 楼』:
呵呵,加一个start好不好?不喜欢黑窗口一直开着。
|

三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2006-11-16 03:12 |
|
|
vkill
金牌会员
     
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
6 楼』:
我觉得这样还不如直接用记事本来的快
|
|
2006-11-16 03:28 |
|
|
ccwan
金牌会员
     
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
7 楼』:
re:vkill
其实这样只是提供一种思路,让大家明白一些命令的用法。并非一定要使用这种通讯录。
有好多软件只是完成几个简单的命令,还做得很复杂呢。^_^
vkill兄别见怪。
|

三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2006-11-16 03:40 |
|
|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
|
2006-11-16 03:52 |
|
|
zouzhxi
中级用户
   蝴蝶之吻
积分 430
发帖 177
注册 2006-9-20 来自 广东深圳
状态 离线
|
『第
9 楼』:
回楼上:
你有代码好像没有双向查询功能, 知道名字,不知道号码,这个查询功能已经有了.
可是只知道号码,不知道名字,这个查询功能就没有.
因为我们写通讯录的时候,不止10个100个,多了,就记不住(处于模糊状态).
 [ Last edited by zouzhxi on 2006-11-16 at 05:32 AM ]
|

|
|
2006-11-16 05:31 |
|
|
ccwan
金牌会员
     
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
10 楼』:
拜托!难道要求全责备?
说过是一种思路了,自己举一反三嘛!
|

三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2006-11-16 05:35 |
|
|
zouzhxi
中级用户
   蝴蝶之吻
积分 430
发帖 177
注册 2006-9-20 来自 广东深圳
状态 离线
|
『第
11 楼』:
我只是说,能不能实现双向模糊查询这一功能.,没有责备的意思。。。
|

|
|
2006-11-16 05:40 |
|
|
vkill
金牌会员
     
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
12 楼』:
Originally posted by zouzhxi at 2006-11-16 05:40:
我只是说,能不能实现双向模糊查询这一功能.,没有责备的意思。。。 这个完全可以,不过"数据库"的格式决定你代码的简单是否,如果用sed代码更好写,和公交线路查询的差不多,~
www.cn-dos.net/forum ...帖子11楼是sed版的
|
|
2006-11-16 06:14 |
|
|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
|
2006-11-16 10:27 |
|
|
namejm
荣誉版主
       batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第
14 楼』:
对于 for %%n in (n N) do if "%input%" == "%%n" goto New
之类的for语句,可以用 来替换,以达到简化代码的目的。
|

尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。 |
|
2006-11-16 11:05 |
|
|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
『第
15 楼』:
if /i "%input%"=="n"
 忘了这个
谢谢 namejm 版主提醒
|
|
2006-11-16 11:08 |
|