Board logo

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

作者: qq692172929    时间: 2016-3-26 00:49     标题: 【已解决】替换文本指定行指定位置的内容(某行某个字段)?

本帖最后由 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
复制代码
读出数据并存了变量。可是怎么修改数据 然后储存到原来的位置呢?

本帖仅用于有规定规律列的,列数可以修改。本帖仅供参考。
作者: happy886rr    时间: 2016-3-26 11:56

  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
作者: qq692172929    时间: 2016-3-26 13:27

回复 2# happy886rr


    我现在是读到了,每个字段, 问题是我修改后怎么储存会去。
作者: qq692172929    时间: 2016-3-26 13:28

@pcl_test
请教,为何是 没按版规发帖了?我这不属于求助帖?
作者: qq692172929    时间: 2016-3-26 13:34

回复  qq692172929
happy886rr 发表于 2016-3-26 11:56



你的意思是边读边存搜索到记录后 进行操作,操作完成后继续读剩下的数据 然后一并写到新 文本里?
作者: pcl_test    时间: 2016-3-26 14:01

回复 4# qq692172929

原标题太笼统随意;贴出那么长的代码与需求豪不相干,你要把新的需求整合到你原有代码中,就要把完整的需求和效果说清楚;在相应楼层点回复,少引用
作者: qq692172929    时间: 2016-3-30 01:56

干脆点,本帖由提问贴改成实例贴好了。自己解决了。
其次版主的说法俺不服。涉嫌随意扣分。




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