找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27044|回复: 6

[文本处理] 【已解决】替换文本指定行指定位置的内容(某行某个字段)?

[复制链接]
发表于 2016-3-26 00:49:45 | 显示全部楼层 |阅读模式
本帖最后由 qq692172929 于 2016-3-30 01:54 编辑

自动生成data.db 例子
例如需要修改data.db 里面的第996行的 第五列 为 原来的值减一 其他内容不动。

代码:
  1. echo off&color a&cls
  2. setlocal EnableDelayedExpansion
  3. set kj01=echo.---------------------------------------
  4. set lj=data.db
  5. title ,

  6. if exist %lj% goto :zcx
  7. echo 数据库规则以 空格 分列 已知最高支持26列,当前本程序已完成7列
  8. echo.&echo.&echo.快速插入一万条记录
  9. for /l %%i in (1,1,10000) do (
  10. echo %%i !random! !random! !random! !random! !random! !random! >>%lj%
  11. )
  12. :zcx
  13. ::::::::::::::::::::计算行数::::::::::::::::::::
  14. set /p list=请输入操作ID^>
  15. echo.数据库建立于:%date% %itme% >db.tmp
  16. for /f "delims=*" %%z in  (%lj%) do (
  17. cls
  18. set /a aa+=1
  19. :::echo 读出来的内容是: %%z
  20. for /f  "tokens=1-7" %%a in ("%%z") do (
  21.       set list1=%%a
  22.       set list2=%%b
  23.       set list3=%%c
  24.       set list4=%%d
  25.       set list5=%%e
  26.       set list6=%%f
  27.       set list7=%%g
  28. echo.正在查找数据...
  29. )
  30. echo.####:!aa!
  31. :::::取到数据后操作。操作完毕后返回继续执行剩下的数据库。
  32. if "!list!"=="!list1!" call :ssok
  33. echo.!list1! !list2! !list3! !list4! !list5! !list6! !list7! >>db.tmp
  34. )
  35. del /s/q %lj%
  36. ren db.tmp %lj%
  37. echo ##记录共计: %aa% 行

  38. pause
  39. exit

  40. :ssok
  41. cls
  42. echo.&echo.&echo.
  43. echo.  客户ID:%list1%
  44. %kj01%
  45. echo.  客户姓名:%list2%
  46. %kj01%
  47. echo.  项目名称:%list3%
  48. %kj01%
  49. echo.  项目总数:%list4%
  50. %kj01%
  51. echo.  项目剩余:%list5%
  52. %kj01%
  53. echo.  上次消费:%list6%
  54. %kj01%
  55. echo.  录入时间:%list7%
  56. %kj01%
  57. echo 记录储存于第:%aa% 行
  58. %kj01%
  59. %kj01%
  60. set /a list5-=1
  61. pause
  62. goto :EOF
复制代码
读出数据并存了变量。可是怎么修改数据 然后储存到原来的位置呢?

本帖仅用于有规定规律列的,列数可以修改。本帖仅供参考。

评分

参与人数 1PB -4 收起 理由
pcl_test -4 未按版规发帖

查看全部评分

发表于 2016-3-26 11:56:54 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f  "tokens=1-7" %%a in ('type db.txt') do (if %%a equ 996 (set ts=16) else (set ts=%%e)
  3. echo %%a %%b %%c %%d !ts! %%f %%g
  4. ))>new.txt
复制代码
回复 1# qq692172929
 楼主| 发表于 2016-3-26 13:27:12 | 显示全部楼层
回复 2# happy886rr


    我现在是读到了,每个字段, 问题是我修改后怎么储存会去。
 楼主| 发表于 2016-3-26 13:28:54 | 显示全部楼层
@pcl_test
请教,为何是 没按版规发帖了?我这不属于求助帖?
 楼主| 发表于 2016-3-26 13:34:22 | 显示全部楼层
回复  qq692172929
happy886rr 发表于 2016-3-26 11:56



你的意思是边读边存搜索到记录后 进行操作,操作完成后继续读剩下的数据 然后一并写到新 文本里?
发表于 2016-3-26 14:01:25 | 显示全部楼层
回复 4# qq692172929

原标题太笼统随意;贴出那么长的代码与需求豪不相干,你要把新的需求整合到你原有代码中,就要把完整的需求和效果说清楚;在相应楼层点回复,少引用
 楼主| 发表于 2016-3-30 01:56:38 | 显示全部楼层
干脆点,本帖由提问贴改成实例贴好了。自己解决了。
其次版主的说法俺不服。涉嫌随意扣分。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 06:01 , Processed in 0.021540 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表