Board logo

标题: [文本处理] 批处理怎样修改txt文件和还原txt文件? [打印本页]

作者: xonic    时间: 2014-7-14 10:12     标题: 批处理怎样修改txt文件和还原txt文件?

本帖最后由 xonic 于 2014-7-14 14:13 编辑
  1. [操作员]
  2. Admin=1111
  3. 001=0
  4. [过秤参数]
  5. 串口号=COM5
  6. 稳定时间=2
  7. 过秤起点=10
  8. 视频格式=2
  9. 使用摄像=0
  10. 称重仪表=1
  11. 只运行本程序=0
  12. 图像大小=2
  13. 图像来源=0
  14. 重量显示字体名称=Arial
  15. 重量显示字体大小=110
  16. 使用固定序号=0
  17. 固定序号=0008
  18. 使用大显示=1
  19. 大显示端口=
  20. 大显示=0
  21. 负数显示零=0
  22. 司磅员可查=0
  23. 参数一=111
  24. 参数二=107
  25. 参数三=109
  26. 扣水显示=其它查询
  27. [其它设置]
  28. 退出关机=0
  29. 电话=联系电话:
  30. [收费设置]
  31. 收费方式=2
  32. 白天起始(时)=8
  33. 白天起始(分)=30
  34. 白天结束(时)=18
  35. 白天结束(分)=30
  36. 最低收费(白天)=5
  37. 普通收费(白天)=1
  38. 最高收费(白天)=1
  39. 最低收费(夜晚)=5
  40. 普通收费(夜晚)=1
  41. 最高收费(夜晚)=1
  42. 最低重量=5
  43. 普通重量=20
  44. 最高重量=50
  45. [序号]
  46. 日期=140526
  47. 序号=18
  48. [其它参数]
  49. 退出关机=0
  50. 自动调整宽度=1
  51. [打印设置]
  52. 退纸=0
  53. 打印纸长度=153
  54. 序号X=94
  55. 序号Y=22
  56. 打印序号=1
  57. 日期X=90
  58. 日期Y=52
  59. 打印日期=1
  60. 时间一X=93
  61. 时间一Y=86
  62. 打印时间一=1
  63. 时间二X=93
  64. 时间二Y=119
  65. 打印时间二=1
  66. 车号X=93
  67. 车号Y=148
  68. 打印车号=1
  69. 总重X=92
  70. 总重Y=240
  71. 打印总重=1
  72. 皮重X=93
  73. 皮重Y=268
  74. 打印皮重=1
  75. 净重X=92
  76. 净重Y=299
  77. 打印净重=1
  78. 客户X=248
  79. 客户Y=113
  80. 打印客户=0
  81. 货物X=93
  82. 货物Y=179
  83. 打印货物=1
  84. 收费X=94
  85. 收费Y=207
  86. 打印收费=1
  87. 司秤员X=222
  88. 司秤员Y=54
  89. 打印司秤员=0
  90. 字体名称=宋体
  91. 字体大小=14
  92. 磅单份数=3
  93. 每份之间的间距=260
  94. 窗口X=259
  95. 窗口Y=60
  96. 窗口宽度=800
  97. 窗口高度=600
复制代码
求批处理处理上面txt文本,[打印设置]那里改成以下
  1. [打印设置]
  2. 退纸=1
  3. 打印纸长度=153
  4. 序号X=61
  5. 序号Y=188
  6. 打印序号=1
  7. 日期X=61
  8. 日期Y=218
  9. 打印日期=1
  10. 时间一X=61
  11. 时间一Y=248
  12. 打印时间一=1
  13. 时间二X=61
  14. 时间二Y=278
  15. 打印时间二=1
  16. 车号X=61
  17. 车号Y=309
  18. 打印车号=1
  19. 总重X=61
  20. 总重Y=400
  21. 打印总重=1
  22. 皮重X=61
  23. 皮重Y=431
  24. 打印皮重=1
  25. 净重X=61
  26. 净重Y=458
  27. 打印净重=1
  28. 客户X=61
  29. 客户Y=36
  30. 打印客户=1
  31. 货物X=61
  32. 货物Y=339
  33. 打印货物=1
  34. 收费X=61
  35. 收费Y=371
  36. 打印收费=0
  37. 司秤员X=222
  38. 司秤员Y=54
  39. 打印司秤员=0
  40. 字体名称=宋体
  41. 字体大小=14
  42. 磅单份数=3
  43. 每份之间的间距=260
  44. 窗口X=155
  45. 窗口Y=62
  46. 窗口宽度=800
  47. 窗口高度=600
复制代码
再求批处理还远原来的[打印设置],求达人帮助
作者: xonic    时间: 2014-7-14 14:14

求好人出手相助
作者: DAIC    时间: 2014-7-14 14:15

准备3个文件

假设文件的名字叫做 设置.ini

设置_1.ini 内容如下:
[打印设置]
退纸=1
......

设置_2.ini 内容如下:
[打印设置]
退纸=0
......

准备2个bat脚本

修改.bat
  1. copy /y "设置_1.ini" "设置.ini"
复制代码
还原.bat
  1. copy /y "设置_2.ini" "设置.ini"
复制代码

作者: xonic    时间: 2014-7-14 17:17

回复 3# DAIC


这样做不可以,因为我的情况是,文本里面其他内容有的会随机变化,求帮助>_<
作者: DAIC    时间: 2014-7-14 17:43

回复 4# xonic


    如果没有任何规律的话,脚本怎么写?
作者: xonic    时间: 2014-7-14 20:42

回复 5# DAIC


   
规律是最后那多行文字修改,前部分是不变的~~~
作者: DAIC    时间: 2014-7-14 21:12

回复 6# xonic


    还是没有解释清楚为什么2楼那种方法不行啊
作者: terse    时间: 2014-7-15 00:31

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=:" %%i in ('findstr /ilnxc:"[打印设置]" a.txt') do set "n=%%i"
  3. (for /L %%i in (2,1,!n!) do (
  4.      set s=
  5.      set/ps=
  6.      echo,!s!
  7. )
  8. type b.txt
  9. )<a.txt >"%temp%\$.t"
  10. >b.txt (echo [打印设置]&more +%n% a.txt)
  11. move "%temp%\$.t" a.txt >nul
  12. pausel
复制代码

作者: hlzj88    时间: 2014-7-15 07:36

也许楼主的表达是在打印设置的地方开始进行内容替换,打印后要替换回去。
借8楼代码,将11句改为d.txt
将你的修改内容存入c.txt
  1. type d.txt>>a.txt
  2. type c.txt>>a.txt
复制代码
还原
  1. del a.txt
  2. type d.txt>>a.txt
  3. type b.txt>>a.txt
复制代码

作者: xonic    时间: 2014-7-15 23:45

回复 9# hlzj88


  好方法!!受教!!!
作者: terse    时间: 2014-7-16 01:00

回复 10# xonic
其实8楼代码再次运行也就还原了
作者: xonic    时间: 2014-7-16 08:25

回复 11# terse


    ~>_<~八楼的代码我运行后,文本没改变。。。。。什么原因??
作者: xonic    时间: 2014-7-16 08:32

回复 8# terse


    八楼代码更改如下运行成功,无限感激!!!!

for /f "delims=:" %%i in ('findstr /i /l /n /x /c:"[打印设置]" a.txt') do set "n=%%i"
作者: xonic    时间: 2014-7-16 08:55

回复 8# terse


    再次求教

批处理的最后能否实现以下功能:

显示更改文本后,“退纸=”那整行
pause;
作者: xonic    时间: 2014-7-16 09:23

自己动手解决(*^__^*) 嘻嘻……

@type Params.dll | (find "退纸=0") >目前打印格式.txt
@type 目前打印格式.txt
@type Params.dll | (find "退纸=1") >目前打印格式.txt
@type 目前打印格式.txt
pause;
作者: terse    时间: 2014-7-16 10:28

回复 15# xonic
  1. findstr /ic:"退纸=" Params.dll
复制代码

作者: xonic    时间: 2014-7-17 15:17

回复 8# terse


    您太厉害了,我花了一个上午才大概看明白一、二行。。。。。。~>_<~
作者: xonic    时间: 2014-7-17 19:30

回复 16# terse


    学习了,好方法,谢谢您




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