Board logo

标题: [文本处理] [已解决]批处理如何将用户输入的内容替换指定的内容? [打印本页]

作者: yuelaner    时间: 2011-8-14 02:42     标题: [已解决]批处理如何将用户输入的内容替换指定的内容?

问题:如何将用户输入的内容替换指定的内容

修改的文件是SCP.sdb,其内容:
例如像这样:
  1. Name,Code,
  2. 名称是用户输入1,100,
  3. 名称是用户输入2,100,
  4. 名称是用户输入3,100,
  5. 名称是用户输入4,100,
复制代码
由于里面的内容不是固定的,因为可以随着用户增加或删除。
增加和删除,自己用下面代码完成。
  1. :1
  2. cls
  3. set /p CodeX="请输入管理员名称:"
  4. echo Name,Code,>.\SCP.sdb
  5. echo %CodeX%,100,>>.\SCP.sdb
  6. goto complete
  7. :2
  8. cls
  9. set /p CodeX="请输入要「增加」的管理员名称:"
  10. echo %CodeX%,100,>>.\SCP.sdb
  11. goto complete
  12. :3
  13. cls
  14. set /p CodeX="请输入要「删除」的管理员名称"
  15. findstr /v /c:%CodeX% SCP.sdb >> nSCP.sdb
  16. del SCP.sdb &ren nSCP.sdb SCP.sdb
  17. goto complete
  18. :4
  19. cls
复制代码
但现在想增加一个功能就是修改其中的Code。
这个数值也是根据用户输入,例如我输入:50

我思路大概是这样:

先让用户输入需要修改的用户名称。
例如:名称是用户输入3
然后让用户修改“名称是用户输入3”后面的数值。
并保留其他内容。

例如:用户先输入“名称是用户输入3”,然后再输入一个数值:50

需要的结果像这样:
  1. Name,Code,
  2. 名称是用户输入1,100,
  3. 名称是用户输入2,100,
  4. 名称是用户输入3,50,
  5. 名称是用户输入4,100,
复制代码
:4 就是想增加的修改功能

可苦思几小时,也搜索相关的帖子,未果。
麻烦各位请帮忙。
作者: hanyeguxing    时间: 2011-8-14 06:36

本帖最后由 hanyeguxing 于 2011-8-14 07:11 编辑
  1. :w
  2. @echo off&setlocal&cls&set "w=SCP.sdb"
  3. set/p Name=请输入 Name ,如果文件中不存在此项则自动在末尾追加:
  4. set/p Code=请输入 Code ,此项不输入为删除,输入为修改或追加:
  5. if not defined Name goto:s
  6. (for /f "useback tokens=1,* delims=," %%a in ("%w%") do (
  7.     if /i "%%a" neq "%Name%" (echo;%%a,%%b,) else (
  8.         set s==
  9.         if defined Code echo;%%a,%Code%,
  10. )))>>tmp
  11. if "%s%"=="" >>tmp echo;%%a,%Code%,
  12. move tmp "%w%"
  13. :s
  14. endlocal&goto:w
复制代码

作者: yuelaner    时间: 2011-8-14 11:58

回复 2# hanyeguxing

感谢,测试成功。
但发现修改后每个句末会多了一个逗号。

后来自己把句中(echo;%%a,%%b,)
%%b, 后面的逗号删除就没有问题了。

再次谢谢。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2