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

[文本处理] 批处理如何根据a.txt中的内容,对很多csv文件中的内容进行替换

[复制链接]
发表于 2020-7-15 07:28:16 | 显示全部楼层 |阅读模式
有一个a.txt 文件,内容如下,其中的内容如下,和定期需要更新
a.txt
NOID_0_0_8=01979664016F0106
NOID_0_0_7=01979664016F0206
NOID_0_0_6=01979664016F0306
...
很多关系数据,且会定期修改

有很多csv文件
Inspection002_CHIP6_NOID_0_0_6.csv
内容中有“NOID_0_0_6”
Inspection002_CHIP7_NOID_0_0_7.csv
内容中有“NOID_0_0_7”
Inspection002_CHIP8_NOID_0_0_8.csv
内容中有“NOID_0_0_8”
...

需求bat读取a.txt文件,根据等于的关系,替换csv文件中的对应内容
替换后得到的csv文件
Inspection002_CHIP6_NOID_0_0_6.csv
内容中的“NOID_0_0_6”被替换成01979664016F0106
Inspection002_CHIP7_NOID_0_0_7.csv
内容中有“NOID_0_0_7”被替换成01979664016F0206
Inspection002_CHIP8_NOID_0_0_8.csv
内容中有“NOID_0_0_8”被替换成01979664016F0306
发表于 2020-7-15 11:13:55 | 显示全部楼层
子文件夹也会一同处理
  1. @echo off
  2. set "txtFile=a.txt"
  3. for /f "usebackq tokens=1,2 delims==" %%i in ("%txtFile%") do (
  4.         for /r %%a in ("*_%%i.csv") do (
  5.                 echo 处理文件:%%a  替换:%%i --^> %%j
  6.                 (
  7.                         for /f "usebackq delims=" %%b in ("%%a") do (
  8.                                 set "line=%%b"
  9.                                 call set "line=%%line:%%i=%%j%%"
  10.                                 call echo %%line%%
  11.                         )
  12.                 )>"%%a_NEW"
  13.                 move /y "%%a_NEW" "%%a" >nul
  14.                 echo 完成!
  15.                 echo ------------------------
  16.         )
  17. )
  18. pause&exit
复制代码
 楼主| 发表于 2020-7-15 17:57:17 | 显示全部楼层
回复 2# went


    功能实现了,但就是太慢了,因为csv文件里头有几个亿的数据量,
为了减少数据搜索量,能否定义只搜索csv文件中的第二列(或者指定的列),如下图:
发表于 2020-7-15 21:25:42 | 显示全部楼层
回复 3# luke2


    每个csv文件都包含几亿行数据吗?单个csv文件大概几GB?
 楼主| 发表于 2020-7-15 22:35:22 | 显示全部楼层
本帖最后由 luke2 于 2020-7-15 22:40 编辑

回复 4# Batcher


  csv文件多,每个csv文件大概45MB,含大概7百万个数据量,一个文件夹有大概40多个G,里头多的有1000个左右的csv文件。
所以请求帮忙,看看看能否实现搜索指定的列内容和进行匹配替换,其他的内容保持不变
发表于 2020-7-16 10:20:48 | 显示全部楼层
回复 5# luke2


    考虑到数据量非常大,而且需要定期更新,建议考虑导入数据库进行处理。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 02:46 , Processed in 0.018284 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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