|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
   『楼 主』:
批处理:通讯录
使用 LLM 解释/回答一下
看了 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 ]
After looking at zouzhxi's DOS version address book, I have some ideas:
Latest modification on floor 20:
Modified from 11-20: Adopt module method to reduce scripts with the same function, add the function of judging whether the contact exists, and modify the single item ending and the retrieval method for viewing all contacts
The search display of version by namejm (modified the single item ending retrieval method):
@echo off
:: The format of the thesaurus is: the word occupies one line (case-insensitive);
:: The translated content starts a new line (no pure letter lines are allowed), and there can be multiple lines.
:begin
cls
set input=
set line=
set /p input=Please enter the word to be searched (press Enter directly to exit):
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 No record found for %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
Batch processing to delete a certain record
@echo off
echo.
set /p DeletePerson= Delete person:
>TelN.db echo ::Address book database
>>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" == "%DeletePerson%" 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 Address book database
::Address book database
--------------------------------------------------
Zhang San
Contact name: Zhang San
Contact phone: Zhang San
Contact address: Zhang San
Contact unit: Zhang San
::
Li Si
Contact name: Li Si
Contact phone: Li Si
Contact address: Li Si
Contact unit: Li Si
::
Wang Wu
Contact name: Wang Wu
Contact phone: Wang Wu
Contact address: Wang Wu
Contact unit: Wang Wu
::
Add single item
set ContactName=
set ContactPhone=
set ContactUnit=
set ContactAddress=
set...
set /p ContactName=Contact name:
set /p ContactPhone=Contact phone:
set /p ContactAddress=Contact unit:
set /p ContactUnit=Contact address:
set /p...
>>Tel.db echo %ContactName%
>>Tel.db echo Contact name: %ContactName%
>>Tel.db echo Contact phone: %ContactPhone%
if not "%ContactUnit%"=="" >>Tel.db echo Contact unit: %ContactUnit%
if not "%ContactAddress%"=="" >>Tel.db echo Contact address: %ContactAddress%
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 楼』:
使用 LLM 解释/回答一下
set 联系人姓名
set 联系人电话
set 联系人单位
set 联系人地址
环境变量没有定义,貌似应为
set 联系人姓名=
set 联系人电话=
set 联系人单位=
set 联系人地址=
不过做得很不错,值得加分。
set Contact Name
set Contact Phone
set Contact Unit
set Contact Address
It seems that the environment variables are not defined, it should be
set Contact Name=
set Contact Phone=
set Contact Unit=
set Contact Address=
But it's done very well, worthy of bonus points.
|

三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2006-11-16 01:39 |
|
|
ccwan
金牌会员
     
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第 3 楼』:
使用 LLM 解释/回答一下
建议再加入全部浏览的命令,因为我就比较喜欢全部显示后再从中查找。
It is suggested to add a command for browsing all. Because I prefer to display all first and then search from them.
|

三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2006-11-16 01:45 |
|
|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
『第 4 楼』:
使用 LLM 解释/回答一下
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”,直接浏览库文件^_^
Originally posted by ccwan at 2006-11-15 13:39:
set Contact Name
set Contact Phone
set Contact Unit
set Contact Address
The environment variable is not defined, it seems it should be
set Contact Name=
set Contact Phone=
set Contact Unit= ...
Missed it ^_^, thank you for pointing out
Originally posted by ccwan at 2006-11-15 13:45:
It is suggested to add a command to browse all, because I prefer to display all and then search from them.
It's simple, add an option to jump and execute "notepad Tel.db" to directly browse the library file ^_^
|
|
2006-11-16 01:56 |
|
|
ccwan
金牌会员
     
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第 5 楼』:
使用 LLM 解释/回答一下
呵呵,加一个start好不好?不喜欢黑窗口一直开着。
Hehe, add a start, okay? I don't like the black window to be open all the time.
|

三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2006-11-16 03:12 |
|
|
vkill
金牌会员
     
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第 6 楼』:
使用 LLM 解释/回答一下
我觉得这样还不如直接用记事本来的快
I think this is not as fast as just using Notepad
|
|
2006-11-16 03:28 |
|
|
ccwan
金牌会员
     
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第 7 楼』:
使用 LLM 解释/回答一下
re:vkill
其实这样只是提供一种思路,让大家明白一些命令的用法。并非一定要使用这种通讯录。
有好多软件只是完成几个简单的命令,还做得很复杂呢。^_^
vkill兄别见怪。
re:vkill
Actually, this is just to provide an idea, letting everyone understand the usage of some commands. It's not necessary to use this address book.
There are many software that only complete a few simple commands but are made very complicated. ^_^
Brother vkill, don't take it to heart.
|

三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2006-11-16 03:40 |
|
|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
『第 8 楼』:
使用 LLM 解释/回答一下
基本应用,不用先建立“Tel.db”
通讯录.bat
@echo off
title 通讯录
mode con cols=80 lines=25
set DisPlay=
:Main
cls
echo.
echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
echo ※ ※
echo ※ ☆欢迎使用命令提示符版通讯录☆ ※
echo ※ ※
echo ※ zxcv@bbs.cn-dos.net zh59@bbs.blueshow.net ※
echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
echo.
echo ※ 增加新联系人(N) ※ 删除联系人(D) ※ 修改联系人(M) ※ 查看Tel.db(V) ※
echo.
set input=
set line=
set /p input= 选择(直接输入联系人查询)%DisPlay%:
if not exist Tel.db call :Tel.db
if "%input%"=="" set DisPlay=&goto Main
for %%n in (n N) do if "%input%"=="%%n" goto New
for %%n in (d D) do if "%input%"=="%%n" goto Del
for %%n in (m M) do if "%input%"=="%%n" goto Modify
for %%n in (v V) do if "%input%"=="%%n" goto db
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
set DisPlay=
goto Main)
:display
echo ________________________________________
echo.
for /f "skip=%line% delims=" %%i in (Tel.db) do (
if "%%i"=="::" goto end
echo %%i
)
:end
echo ________________________________________
echo.
pause
set DisPlay=
goto Main
:Tel.db
>Tel.db echo ::电话本数据库
>>Tel.db echo --------------------------------------------------
>>Tel.db echo.
goto :eof
:New
echo.
set 联系人姓名=
set 联系人电话=
set 联系人单位=
set 联系人地址=
set /p 联系人姓名= 联系人姓名:
if "%联系人姓名%"=="" goto Main
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 联系人地址:%联系人地址%
>>Tel.db echo ::
>>Tel.db echo.
set DisPlay=(增加新联系人: %联系人姓名%)
goto Main
:Del
echo.
set N=
set Num=
set /p 删除联系人= 删除联系人:
if "%删除联系人%"=="" set DisPlay=&goto Main
>TelN.db echo ::电话本数据库
>>TelN.db echo --------------------------------------------------
>>TelN.db echo.
set Delete=echo
setlocal EnableDelayedExpansion
for /f "skip=3 delims=" %%i in (Tel.db) do (
if "%%i" == "%删除联系人%" set Delete=rem
!Delete! %%i>>TelN.db
if "%%i" == "::" !Delete!.>>TelN.db&&set Delete=echo
)
echo.
move/y Tel.db TelBak.db
ren TelN.db Tel.db
set DisPlay=(联系人 %删除联系人% 已删除)
goto Main
:Modify
echo.
set 修改联系人姓名=
set /p 修改联系人姓名= 修改联系人姓名:
if "%修改联系人姓名%"=="" set DisPlay=&goto Main
echo.
echo 修改:
echo.
set 联系人姓名=
set 联系人电话=
set 联系人单位=
set 联系人地址=
set /p 联系人姓名= 联系人姓名:
if "%联系人姓名%"=="" goto Main
set /p 联系人电话= 联系人电话:
set /p 联系人地址= 联系人单位:
set /p 联系人单位= 联系人地址:
set 删除联系人=%修改联系人姓名%
>TelN.db echo ::电话本数据库
>>TelN.db echo --------------------------------------------------
>>TelN.db echo.
set Delete=echo
setlocal EnableDelayedExpansion
for /f "skip=3 delims=" %%i in (Tel.db) do (
if "%%i" == "%删除联系人%" set Delete=rem
!Delete! %%i>>TelN.db
if "%%i" == "::" !Delete!.>>TelN.db&&set Delete=echo
)
echo.
move/y Tel.db TelBak.db
ren TelN.db Tel.db
>>Tel.db echo %联系人姓名%
>>Tel.db echo 联系人姓名:%联系人姓名%
>>Tel.db echo 联系人电话:%联系人电话%
if not "%联系人单位%"=="" >>Tel.db echo 联系人单位:%联系人单位%
if not "%联系人地址%"=="" >>Tel.db echo 联系人地址:%联系人地址%
>>Tel.db echo ::
>>Tel.db echo.
set DisPlay=(联系人 %修改联系人姓名% 已修改)
goto Main
:db
start notepad Tel.db
goto Main
其实修改联系人是删除联系人与增加新联系人联合处理的
Last edited by zxcv on 2006-11-15 at 03:55 PM ]
Basic application, no need to create "Tel.db" first
Address Book.bat
@echo off
title Address Book
mode con cols=80 lines=25
set DisPlay=
:Main
cls
echo.
echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
echo ※ ※
echo ※ ☆Welcome to the Command Prompt Version Address Book☆ ※
echo ※ ※
echo ※ zxcv@bbs.cn-dos.net zh59@bbs.blueshow.net ※
echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
echo.
echo ※ Add New Contact (N) ※ Delete Contact (D) ※ Modify Contact (M) ※ View Tel.db (V) ※
echo.
set input=
set line=
set /p input= Choose (directly enter contact to query)%DisPlay%:
if not exist Tel.db call :Tel.db
if "%input%"=="" set DisPlay=&goto Main
for %%n in (n N) do if "%input%"=="%%n" goto New
for %%n in (d D) do if "%input%"=="%%n" goto Del
for %%n in (m M) do if "%input%"=="%%n" goto Modify
for %%n in (v V) do if "%input%"=="%%n" goto db
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 No record found for %input%
echo ________________________________________
echo.
pause
set DisPlay=
goto Main)
:display
echo ________________________________________
echo.
for /f "skip=%line% delims=" %%i in (Tel.db) do (
if "%%i"=="::" goto end
echo %%i
)
:end
echo ________________________________________
echo.
pause
set DisPlay=
goto Main
:Tel.db
>Tel.db echo ::Address Book Database
>>Tel.db echo --------------------------------------------------
>>Tel.db echo.
goto :eof
:New
echo.
set Contact Name=
set Contact Phone=
set Contact Unit=
set Contact Address=
set /p Contact Name= Contact Name:
if "%Contact Name%"=="" goto Main
set /p Contact Phone= Contact Phone:
set /p Contact Address= Contact Unit:
set /p Contact Unit= Contact Address:
>>Tel.db echo %Contact Name%
>>Tel.db echo Contact Name: %Contact Name%
>>Tel.db echo Contact Phone: %Contact Phone%
if not "%Contact Unit%"=="" >>Tel.db echo Contact Unit: %Contact Unit%
if not "%Contact Address%"=="" >>Tel.db echo Contact Address: %Contact Address%
>>Tel.db echo ::
>>Tel.db echo.
set DisPlay=(Added new contact: %Contact Name%)
goto Main
:Del
echo.
set N=
set Num=
set /p Delete Contact= Delete Contact:
if "%Delete Contact%"=="" set DisPlay=&goto Main
>TelN.db echo ::Address Book Database
>>TelN.db echo --------------------------------------------------
>>TelN.db echo.
set Delete=echo
setlocal EnableDelayedExpansion
for /f "skip=3 delims=" %%i in (Tel.db) do (
if "%%i" == "%Delete Contact%" set Delete=rem
!Delete! %%i>>TelN.db
if "%%i" == "::" !Delete!.>>TelN.db&&set Delete=echo
)
echo.
move/y Tel.db TelBak.db
ren TelN.db Tel.db
set DisPlay=(Contact %Delete Contact% has been deleted)
goto Main
:Modify
echo.
set Modify Contact Name=
set /p Modify Contact Name= Modify Contact Name:
if "%Modify Contact Name%"=="" set DisPlay=&goto Main
echo.
echo Modify:
echo.
set Contact Name=
set Contact Phone=
set Contact Unit=
set Contact Address=
set /p Contact Name= Contact Name:
if "%Contact Name%"=="" goto Main
set /p Contact Phone= Contact Phone:
set /p Contact Address= Contact Unit:
set /p Contact Unit= Contact Address:
set Delete Contact=%Modify Contact Name%
>TelN.db echo ::Address Book Database
>>TelN.db echo --------------------------------------------------
>>TelN.db echo.
set Delete=echo
setlocal EnableDelayedExpansion
for /f "skip=3 delims=" %%i in (Tel.db) do (
if "%%i" == "%Delete Contact%" set Delete=rem
!Delete! %%i>>TelN.db
if "%%i" == "::" !Delete!.>>TelN.db&&set Delete=echo
)
echo.
move/y Tel.db TelBak.db
ren TelN.db Tel.db
>>Tel.db echo %Contact Name%
>>Tel.db echo Contact Name: %Contact Name%
>>Tel.db echo Contact Phone: %Contact Phone%
if not "%Contact Unit%"=="" >>Tel.db echo Contact Unit: %Contact Unit%
if not "%Contact Address%"=="" >>Tel.db echo Contact Address: %Contact Address%
>>Tel.db echo ::
>>Tel.db echo.
set DisPlay=(Contact %Modify Contact Name% has been modified)
goto Main
:db
start notepad Tel.db
goto Main
Actually, modifying a contact is a combined process of deleting a contact and adding a new contact
Last edited by zxcv on 2006-11-15 at 03:55 PM ]
附件
1: IE 通讯录.gif (2006-11-27 04:04, 19.24 KiB, 下载附件所需积分 1 点
,下载次数: 3)
附件
2: 新增联系人.gif (2006-11-27 04:06, 20.39 KiB, 下载附件所需积分 1 点
,下载次数: 3)
附件
3: 联系人资料.gif (2006-11-27 04:06, 40.41 KiB, 下载附件所需积分 1 点
,下载次数: 3)
|
|
2006-11-16 03:52 |
|
|
zouzhxi
中级用户
   蝴蝶之吻
积分 430
发帖 177
注册 2006-9-20 来自 广东深圳
状态 离线
|
『第 9 楼』:
使用 LLM 解释/回答一下
回楼上:
你有代码好像没有双向查询功能,
知道名字,不知道号码,这个查询功能已经有了.
可是只知道号码,不知道名字,这个查询功能就没有.
因为我们写通讯录的时候,不止10个100个,多了,就记不住(处于模糊状态).

Last edited by zouzhxi on 2006-11-16 at 05:32 AM ]
Reply to the upstairs:
You have code but it seems there is no two-way query function,
Knowing the name but not the number, this query function already exists.
But only knowing the number but not the name, this query function is not available.
Because when we write the address book, it's not just 10 or 100, there are more, so we can't remember (in a vague state).

Last edited by zouzhxi on 2006-11-16 at 05:32 AM ]
|

Butterfly Kiss Blog
计算机DIY联盟论坛 |
|
2006-11-16 05:31 |
|
|
ccwan
金牌会员
     
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第 10 楼』:
使用 LLM 解释/回答一下
拜托!难道要求全责备?
说过是一种思路了,自己举一反三嘛!
Come on! Is it necessary to be overly critical?
I said it's just an idea. You can use it as a reference and think of similar cases by yourself!
|

三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2006-11-16 05:35 |
|
|
zouzhxi
中级用户
   蝴蝶之吻
积分 430
发帖 177
注册 2006-9-20 来自 广东深圳
状态 离线
|
|
2006-11-16 05:40 |
|
|
vkill
金牌会员
     
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第 12 楼』:
使用 LLM 解释/回答一下
Originally posted by zouzhxi at 2006-11-16 05:40:
我只是说,能不能实现双向模糊查询这一功能.,没有责备的意思。。。
这个完全可以,不过"数据库"的格式决定你代码的简单是否,如果用sed代码更好写,和公交线路查询的差不多,~
http://www.cn-dos.net/forum/viewthread.php?tid=24668&fpage=1帖子11楼是sed版的
Originally posted by zouzhxi at 2006-11-16 05:40:
I just said, can the two-way fuzzy query function be realized. There is no meaning of blame...
This is completely possible. However, the format of the "database" determines the simplicity of your code. If sed code is used, it is easier to write, similar to the bus route query. ~
http://www.cn-dos.net/forum/viewthread.php?tid=24668&fpage=1 The 11th floor of the post is the sed version
|
|
2006-11-16 06:14 |
|
|
zh159
金牌会员
     
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
  『第 13 楼』:
使用 LLM 解释/回答一下
修改:联系人或电话双向查询、查看全部联系人及电话
通讯录.bat
@echo off
title 通讯录
mode con cols=80 lines=25
set DisPlay=
setlocal EnableDelayedExpansion
:Main
cls
echo.
echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
echo ※ ※
echo ※ ☆欢迎使用命令提示符版通讯录☆ ※
echo ※ ※
echo ※ zxcv@bbs.cn-dos.net zh59@bbs.blueshow.net ※
echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
echo.
echo ※ 新增(N) ※ 删除(D) ※ 修改(M) ※ 查看全部(A) ※ 查看 Tel.db(V) ※
echo.
set input=
set line=
set /p input= 选择(直接输入联系人或电话查询)%DisPlay%:
if not exist Tel.db call :Tel.db
if "%input%" == "" set DisPlay=&goto Main
if /i "%input%" == "n" goto New
if /i "%input%" == "d" goto Del
if /i "%input%" == "m" goto Modify
if /i "%input%" == "a" goto All
if /i "%input%" == "v" goto db
for /f "tokens=1,2,3* delims=:" %%i in ('findstr /nirc:"%input%" Tel.db') do (
if "%%j" == "%input%" set line=%%i
if "%%k" == "%input%" set line=%%i)
if not "%line%" == "" (goto display) else (
echo ________________________________________
echo.
echo 没有找到 %input% 的记录
echo ________________________________________
echo.
pause
set DisPlay=
goto Main)
:display
echo ________________________________________
echo.
for /f "skip=%line% delims=" %%i in (Tel.db) do (
if "%%i" == "::" goto end
echo %%i
)
:end
echo ________________________________________
echo.
pause
set DisPlay=
goto Main
:Tel.db
>Tel.db echo ::电话本数据库
>>Tel.db echo --------------------------------------------------
>>Tel.db echo.
goto :eof
:New
echo.
set 联系人姓名=
set 联系人电话=
set 联系人单位=
set 联系人地址=
set /p 联系人姓名= 联系人姓名:
if "%联系人姓名%" == "" goto Main
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 联系人地址:%联系人地址%
>>Tel.db echo ::
>>Tel.db echo.
set DisPlay=(增加新联系人: %联系人姓名%)
goto Main
:Del
echo.
set N=
set Num=
set /p 删除联系人= 删除联系人:
if "%删除联系人%" == "" set DisPlay=&goto Main
>TelN.db echo ::电话本数据库
>>TelN.db echo --------------------------------------------------
>>TelN.db echo.
set Delete=echo
for /f "skip=3 delims=" %%i in (Tel.db) do (
call :DelName %%i
if "!数据库!" == "%删除联系人%" set Delete=rem
!Delete! %%i>>TelN.db
if "%%i" == "::" !Delete!.>>TelN.db&&set Delete=echo
)
echo.
move/y Tel.db TelBak.db
ren TelN.db Tel.db
set DisPlay=(联系人 %删除联系人% 已删除)
goto Main
:Modify
echo.
set 修改联系人姓名=
set /p 修改联系人姓名= 修改联系人姓名:
if "%修改联系人姓名%" == "" set DisPlay=&goto Main
echo.
echo 修改:
echo.
set 联系人姓名=
set 联系人电话=
set 联系人单位=
set 联系人地址=
set /p 联系人姓名= 联系人姓名:
if "%联系人姓名%" == "" goto Main
set /p 联系人电话= 联系人电话:
set /p 联系人地址= 联系人单位:
set /p 联系人单位= 联系人地址:
set 删除联系人=%修改联系人姓名%
>TelN.db echo ::电话本数据库
>>TelN.db echo --------------------------------------------------
>>TelN.db echo.
set Delete=echo
setlocal EnableDelayedExpansion
for /f "skip=3 delims=" %%i in (Tel.db) do (
call :DelName %%i
if "!数据库!" == "%删除联系人%" set Delete=rem
!Delete! %%i>>TelN.db
if "%%i" == "::" !Delete!.>>TelN.db&&set Delete=echo
)
echo.
move/y Tel.db TelBak.db
ren TelN.db Tel.db
>>Tel.db echo %联系人姓名%:%联系人电话%:::
>>Tel.db echo 联系人姓名:%联系人姓名%
>>Tel.db echo 联系人电话:%联系人电话%
if not "%联系人单位%" == "" >>Tel.db echo 联系人单位:%联系人单位%
if not "%联系人地址%" == "" >>Tel.db echo 联系人地址:%联系人地址%
>>Tel.db echo ::
>>Tel.db echo.
set DisPlay=(联系人 %修改联系人姓名% 已修改)
goto Main
:All
cls
echo.
echo 通讯录所有联系人:
echo.
set N=
for /f "skip=3 delims=" %%i in (Tel.db) do (
set All=%%i
if "!All:~-3!" == ":::" set /a N+=1&set AllShow=!All::::=!&&echo !AllShow::=: !
set /a P=!N!%%19
if "!P!" == "0" if "!All:~-3!" == ":::" call :AllPaus)
echo.
pause
goto Main
:db
start notepad Tel.db
goto Main
:DelName
for /f "tokens=1* delims=:" %%n in ("%1") do set 数据库=%%n
goto :eof
:AllPaus
echo.
set Paus=
set /p Paus= 回车继续(B返回主界面)...
if /i "%Paus%" == "b" goto Main
cls
echo.
echo 通讯录所有联系人:
echo.
goto :eof
Last edited by zxcv on 2006-11-15 at 11:14 PM ]
Modify: Two-way query of contacts or phone numbers, view all contacts and phone numbers
Address Book.bat
@echo off
title Address Book
mode con cols=80 lines=25
set DisPlay=
setlocal EnableDelayedExpansion
:Main
cls
echo.
echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
echo ※ ※
echo ※ ☆Welcome to the Command Prompt Version Address Book☆ ※
echo ※ ※
echo ※ zxcv@bbs.cn-dos.net zh59@bbs.blueshow.net ※
echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
echo.
echo ※ Add (N) ※ Delete (D) ※ Modify (M) ※ View All (A) ※ View Tel.db (V) ※
echo.
set input=
set line=
set /p input= Select (directly enter contact or phone number to query)%DisPlay%:
if not exist Tel.db call :Tel.db
if "%input%" == "" set DisPlay=&goto Main
if /i "%input%" == "n" goto New
if /i "%input%" == "d" goto Del
if /i "%input%" == "m" goto Modify
if /i "%input%" == "a" goto All
if /i "%input%" == "v" goto db
for /f "tokens=1,2,3* delims=:" %%i in ('findstr /nirc:"%input%" Tel.db') do (
if "%%j" == "%input%" set line=%%i
if "%%k" == "%input%" set line=%%i)
if not "%line%" == "" (goto display) else (
echo ________________________________________
echo.
echo No record found for %input%
echo ________________________________________
echo.
pause
set DisPlay=
goto Main)
:display
echo ________________________________________
echo.
for /f "skip=%line% delims=" %%i in (Tel.db) do (
if "%%i" == "::" goto end
echo %%i
)
:end
echo ________________________________________
echo.
pause
set DisPlay=
goto Main
:Tel.db
>Tel.db echo ::Address Book Database
>>Tel.db echo --------------------------------------------------
>>Tel.db echo.
goto :eof
:New
echo.
set ContactName=
set ContactPhone=
set ContactUnit=
set ContactAddress=
set /p ContactName= Contact Name:
if "%ContactName%" == "" goto Main
set /p ContactPhone= Contact Phone:
set /p ContactAddress= Contact Unit:
set /p ContactUnit= Contact Address:
>>Tel.db echo %ContactName%:%ContactPhone%:::
>>Tel.db echo Contact Name: %ContactName%
>>Tel.db echo Contact Phone: %ContactPhone%
if not "%ContactUnit%" == "" >>Tel.db echo Contact Unit: %ContactUnit%
if not "%ContactAddress%" == "" >>Tel.db echo Contact Address: %ContactAddress%
>>Tel.db echo ::
>>Tel.db echo.
set DisPlay=(Added new contact: %ContactName%)
goto Main
:Del
echo.
set N=
set Num=
set /p DeleteContact= Delete contact:
if "%DeleteContact%" == "" set DisPlay=&goto Main
>TelN.db echo ::Address Book Database
>>TelN.db echo --------------------------------------------------
>>TelN.db echo.
set Delete=echo
for /f "skip=3 delims=" %%i in (Tel.db) do (
call :DelName %%i
if "!Database!" == "%DeleteContact%" set Delete=rem
!Delete! %%i>>TelN.db
if "%%i" == "::" !Delete!.>>TelN.db&&set Delete=echo
)
echo.
move/y Tel.db TelBak.db
ren TelN.db Tel.db
set DisPlay=(Contact %DeleteContact% has been deleted)
goto Main
:Modify
echo.
set ModifyContactName=
set /p ModifyContactName= Modify contact name:
if "%ModifyContactName%" == "" set DisPlay=&goto Main
echo.
echo Modify:
echo.
set ContactName=
set ContactPhone=
set ContactUnit=
set ContactAddress=
set /p ContactName= Contact Name:
if "%ContactName%" == "" goto Main
set /p ContactPhone= Contact Phone:
set /p ContactAddress= Contact Unit:
set /p ContactUnit= Contact Address:
set DeleteContact=%ModifyContactName%
>TelN.db echo ::Address Book Database
>>TelN.db echo --------------------------------------------------
>>TelN.db echo.
set Delete=echo
setlocal EnableDelayedExpansion
for /f "skip=3 delims=" %%i in (Tel.db) do (
call :DelName %%i
if "!Database!" == "%DeleteContact%" set Delete=rem
!Delete! %%i>>TelN.db
if "%%i" == "::" !Delete!.>>TelN.db&&set Delete=echo
)
echo.
move/y Tel.db TelBak.db
ren TelN.db Tel.db
>>Tel.db echo %ContactName%:%ContactPhone%:::
>>Tel.db echo Contact Name: %ContactName%
>>Tel.db echo Contact Phone: %ContactPhone%
if not "%ContactUnit%" == "" >>Tel.db echo Contact Unit: %ContactUnit%
if not "%ContactAddress%" == "" >>Tel.db echo Contact Address: %ContactAddress%
>>Tel.db echo ::
>>Tel.db echo.
set DisPlay=(Contact %ModifyContactName% has been modified)
goto Main
:All
cls
echo.
echo All contacts in the address book:
echo.
set N=
for /f "skip=3 delims=" %%i in (Tel.db) do (
set All=%%i
if "!All:~-3!" == ":::" set /a N+=1&set AllShow=!All::::=!&&echo !AllShow::=: !
set /a P=!N!%%19
if "!P!" == "0" if "!All:~-3!" == ":::" call :AllPaus)
echo.
pause
goto Main
:db
start notepad Tel.db
goto Main
:DelName
for /f "tokens=1* delims=:" %%n in ("%1") do set Database=%%n
goto :eof
:AllPaus
echo.
set Paus=
set /p Paus= Press Enter to continue (B to return to main interface)...
if /i "%Paus%" == "b" goto Main
cls
echo.
echo All contacts in the address book:
echo.
goto :eof
Last edited by zxcv on 2006-11-15 at 11:14 PM ]
附件
1: 修改联系人资料.gif (2006-11-27 04:07, 22.48 KiB, 下载附件所需积分 1 点
,下载次数: 4)
附件
2: 所有联系人资料.gif (2006-11-27 04:08, 49.41 KiB, 下载附件所需积分 1 点
,下载次数: 3)
|
|
2006-11-16 10:27 |
|
|
namejm
荣誉版主
       batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第 14 楼』:
使用 LLM 解释/回答一下
对于 for %%n in (n N) do if "%input%" == "%%n" goto New
之类的for语句,可以用 if /i "%input%"=="n"
来替换,以达到简化代码的目的。
For a `for` statement like
```code
for %%n in (n N) do if "%input%" == "%%n" goto New
```
it can be replaced with
```code
if /i "%input%"=="n"
```
to simplify the code.
|

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