标题: [文本处理] [已解决]批处理如何将用户输入的内容替换指定的内容? [打印本页]
作者: yuelaner 时间: 2011-8-14 02:42 标题: [已解决]批处理如何将用户输入的内容替换指定的内容?
问题:如何将用户输入的内容替换指定的内容
修改的文件是SCP.sdb,其内容:
例如像这样:- Name,Code,
- 名称是用户输入1,100,
- 名称是用户输入2,100,
- 名称是用户输入3,100,
- 名称是用户输入4,100,
复制代码
由于里面的内容不是固定的,因为可以随着用户增加或删除。
增加和删除,自己用下面代码完成。- :1
- cls
- set /p CodeX="请输入管理员名称:"
- echo Name,Code,>.\SCP.sdb
- echo %CodeX%,100,>>.\SCP.sdb
- goto complete
- :2
- cls
- set /p CodeX="请输入要「增加」的管理员名称:"
- echo %CodeX%,100,>>.\SCP.sdb
- goto complete
- :3
- cls
- set /p CodeX="请输入要「删除」的管理员名称"
- findstr /v /c:%CodeX% SCP.sdb >> nSCP.sdb
- del SCP.sdb &ren nSCP.sdb SCP.sdb
- goto complete
- :4
- cls
复制代码
但现在想增加一个功能就是修改其中的Code。
这个数值也是根据用户输入,例如我输入:50
我思路大概是这样:
先让用户输入需要修改的用户名称。
例如:名称是用户输入3
然后让用户修改“名称是用户输入3”后面的数值。
并保留其他内容。
例如:用户先输入“名称是用户输入3”,然后再输入一个数值:50
需要的结果像这样:- Name,Code,
- 名称是用户输入1,100,
- 名称是用户输入2,100,
- 名称是用户输入3,50,
- 名称是用户输入4,100,
复制代码
:4 就是想增加的修改功能
可苦思几小时,也搜索相关的帖子,未果。
麻烦各位请帮忙。
作者: hanyeguxing 时间: 2011-8-14 06:36
本帖最后由 hanyeguxing 于 2011-8-14 07:11 编辑
- :w
- @echo off&setlocal&cls&set "w=SCP.sdb"
- set/p Name=请输入 Name ,如果文件中不存在此项则自动在末尾追加:
- set/p Code=请输入 Code ,此项不输入为删除,输入为修改或追加:
- if not defined Name goto:s
- (for /f "useback tokens=1,* delims=," %%a in ("%w%") do (
- if /i "%%a" neq "%Name%" (echo;%%a,%%b,) else (
- set s==
- if defined Code echo;%%a,%Code%,
- )))>>tmp
- if "%s%"=="" >>tmp echo;%%a,%Code%,
- move tmp "%w%"
- :s
- endlocal&goto:w
复制代码
作者: yuelaner 时间: 2011-8-14 11:58
回复 2# hanyeguxing
感谢,测试成功。
但发现修改后每个句末会多了一个逗号。
后来自己把句中(echo;%%a,%%b,)
%%b, 后面的逗号删除就没有问题了。
再次谢谢。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |