[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

修改的文件是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 就是想增加的修改功能

可苦思几小时,也搜索相关的帖子,未果。
麻烦各位请帮忙。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 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
复制代码
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 2# hanyeguxing

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

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

再次谢谢。

TOP

返回列表