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

[文本处理] [已解决]批处理如何修改多个TXT文件中的多个数字

[复制链接]
发表于 2015-11-19 00:39:14 | 显示全部楼层 |阅读模式
前面有“修改多个TXT文件中的多个数字”的问题,在网上搜并学习修改,解决了,是VBS。
无意中发现批处理之家,又碰到“批处理修改数字作为文件名中的某个数字”的问题,在网上弄半天不得要领,于是在这里发贴,没想到 会飞的蜗牛丶 今天就给解决了,当然还闹了笑话,我弄成VBS,执行错误。无意中转成BAT,成功了。
向会飞的蜗牛丶表示感谢。
问题来了,二个问题是处理同时一批文件,目前我一个是VBS(修改各个文档内的内容),一个是BAT(修改文档名),分别各点一下也无妨,但我还是想合到一个文件里,呵呵。
我就单独再问一下:
若干TXT文件,每个文档内都是多组数字组成,批处理修改每个文档内的其中多个数字,要修改如:2015批修改成2013  2014批修改成2012 等。如何BAT实现。
谢谢。

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-11-19 06:42:17 | 显示全部楼层
  1. fr -s *.txt -f:2015 -t:2013
复制代码
发表于 2015-11-19 09:25:05 | 显示全部楼层
  1. sed -i -e "s/2015/2013/g" -e "s/2014/2012/g" *.txt
复制代码
 楼主| 发表于 2015-11-19 10:36:14 | 显示全部楼层
对不起,可能是我表述错误,应该是:2015/10/15改成2013/10/15.刚试了上述二个方法,又看了数据,发现可能表述错了,二个表述不同可能方法不同。
发表于 2015-11-19 10:47:00 | 显示全部楼层
2015 改成2015/10/15很难吗,不需要智商的吧。
 楼主| 发表于 2015-11-19 10:59:22 | 显示全部楼层
VBS方法
Set WshShell = CreateObject("Wscript.Shell")
WshShell.Run "cmd /c dir /s/b *.txt > list.txt",vbHide
Wscript.Sleep 1000
sFile = "list.txt"  
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set oFile = objFSO.OpenTextFile(sFile,1)
Do While Not oFile.AtEndOfStream
strLine = oFile.ReadLine
If Len(strLine) > 0 Then
Set File = objFSO.OpenTextFile(strLine, 1)      
aryLines = File.ReadAll
File.Close      
aryLines = Replace(aryLines, "2015", "2010")
aryLines = Replace(aryLines, "2014", "2009")
aryLines = Replace(aryLines, "2013", "2008")
aryLines = Replace(aryLines, "2012", "2007")
aryLines = Replace(aryLines, "2011", "2006")
Set File = objFSO.OpenTextFile(strLine, 2)   
File.Write aryLines            
File.Close
End If
Loop
oFile.Close            
objFSO.DeleteFile sFile
Set objFSO = Nothing
msgbox "完毕",0,"标题"
 楼主| 发表于 2015-11-19 12:53:24 | 显示全部楼层
回复 5# 依山居

呵呵,编程方面确实没有智商,我是学机械的,喜欢学习,但年经大了,要深入学习已经不行了,浅浅地研究一下。
发表于 2015-11-19 13:13:34 | 显示全部楼层
回复 4# lixsh2000
  1. sed -i -e "s#2015/10/15#2013/10/15#g" -e "s#2014/10/15#2012/10/15#g" *.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2015-11-19 13:46:12 | 显示全部楼层
确实没看懂
 楼主| 发表于 2015-11-19 15:03:24 | 显示全部楼层
本帖最后由 lixsh2000 于 2015-11-19 15:17 编辑

回复 9# 会飞的蜗牛丶


    多个TXT,每个其中数据:

2015/11/12 23.23 24.96 23.20 24.39 165374088 3993103872.00
2015/11/13 23.96 26.83 23.52 25.89 239326677 6100945920.00
2015/11/16 25.20 26.16 25.07 25.82 127833168 3269311744.00
2015/11/17 26.20 26.45 24.72 24.78 124011229 3179117568.00
2015/11/18 24.70 25.00 23.30 23.50 111448365 2679235328.00
2015/11/19 23.75 23.86 23.30 23.67 19486700 460364640.00
。。。。。。。
2014/11/25 11.00 11.38 10.96 11.33 60905539 838623872.00
2014/11/26 11.42 11.53 11.13 11.26 47903478 661834176.00
2014/11/27 11.42 11.81 11.32 11.39 75928674 1076213632.00
2014/11/28 11.23 11.27 10.94 11.06 54866135 747219200.00
2014/12/01 11.08 11.13 10.83 11.02 30803402 413931520.00
2014/12/02 11.00 11.11 10.90 11.03 31314176 423780608.00
。。。。。。。


改成:
2013/11/12 23.23 24.96 23.20 24.39 165374088 3993103872.00
2013/11/13 23.96 26.83 23.52 25.89 239326677 6100945920.00
2013/11/16 25.20 26.16 25.07 25.82 127833168 3269311744.00
2013/11/17 26.20 26.45 24.72 24.78 124011229 3179117568.00
2013/11/18 24.70 25.00 23.30 23.50 111448365 2679235328.00
2013/11/19 23.75 23.86 23.30 23.67 19486700 460364640.00
。。。。。。。
2012/11/25 11.00 11.38 10.96 11.33 60905539 838623872.00
2012/11/26 11.42 11.53 11.13 11.26 47903478 661834176.00
2012/11/27 11.42 11.81 11.32 11.39 75928674 1076213632.00
2012/11/28 11.23 11.27 10.94 11.06 54866135 747219200.00
2012/12/01 11.08 11.13 10.83 11.02 30803402 413931520.00
2012/12/02 11.00 11.11 10.90 11.03 31314176 423780608.00
。。。。。。。
2015-----改成了2013
2014-----改成了2012
如何批处理。
不好意思。
以上数据我用上面的VBS改成功了。现在想用BAI批处理。然后合并到你昨天给我的批处理中,实现:对每个TXT中的以上数据修改内容,然后对TXT文件改名,呵呵。
发表于 2015-11-19 15:24:04 | 显示全部楼层
回复 10# lixsh2000


    把8楼代码保存为test.bat,点击8楼签名处,下载 sed.exe,把 sed.exe 和你需要处理的文本以及test.bat放在同一文件夹下,双击运行test.bat
发表于 2015-11-19 15:31:41 | 显示全部楼层
如果所有代码都必须像这样来一段使用说明,我猜没人再回复了,更别说写代码了
发表于 2015-11-19 16:03:28 | 显示全部楼层
提问请上实际数据文件片段,传网盘放链接。
 楼主| 发表于 2015-11-19 16:06:03 | 显示全部楼层
前天才注册,没有注意各种方法,向各位表示歉意
发表于 2015-11-19 16:46:50 | 显示全部楼层
  1. goto code
  2. ::注释区
  3. 替换文本中的行首年份
  4. fr 下载方法同sed
  5. 或者安装batch-cn 输入bcn gt fr可以完成下载
  6. http://baiy.cn/utils/fr/index.htm

  7. :code
  8. copy a1.txt aa1.txt /y

  9. ::fr aa1.txt -r:(^2015)(/\d+/\d+) -t:"2013\2"
  10. ::fr aa1.txt -r:(^2014)(/\d+/\d+) -t:"2012\2"

  11. ::使用^限定替换行首的年份
  12. fr aa1.txt -r:^2015 -t:2013
  13. fr aa1.txt -r:^2014 -t:2012

  14. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 11:09 , Processed in 0.024613 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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