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

[文本处理] 批处理怎样替换指定内容并设置每个小时运行替换一次?

[复制链接]
发表于 2021-8-22 17:23:32 | 显示全部楼层 |阅读模式
指定内容替换,最后能设置每个小时运行替换一次(第几位可以用逗号识别)

源txt
20210816230000,3439-1000,1,2,3,4,5,0,1,2,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,
20210816230000,3439-3,2,49,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
20210816230000,7686-19,2,3,1,0,0,1,2,2,0,5,5,17,17,18,34,41,50,46,40,45,30,33,44,
20210816230000,7686-100001,0,14,9,5,6,10,27,43,26,38,54,74,22,10,9,4,13,24,9,6,11,4,5,10,

修改要求:(第几位可以用逗号识别)
3439-1000/7686-19后面的
第1位改成2
第2位改成4
第3位改成5
第4位改成7
第5位改成9
第6位改成10
第7位改成10

修改后txt
20210816230000,3439-1000,2,4,5,7,9,10,10,2,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,
20210816230000,3439-3,2,49,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,
20210816230000,7686-19,2,4,5,7,9,10,10,2,0,5,5,17,17,18,34,41,50,46,40,45,30,33,44,
20210816230000,7686-10001,0,14,9,5,6,10,27,43,26,38,54,74,22,10,9,4,13,24,9,6,11,4,5,10,
发表于 2021-8-22 22:19:19 | 显示全部楼层
本帖最后由 idwma 于 2021-8-22 22:42 编辑
  1. @echo off
  2. :loop
  3. (for /f "tokens=1-10* delims=,-" %%a in (111.txt) do (
  4. if "%%b-%%c"=="3439-1000" (
  5. echo;%%a,%%b-%%c,2,4,5,7,9,10,10,%%k
  6. ) else if "%%b-%%c"=="7686-19" (
  7. echo;%%a,%%b-%%c,2,4,5,7,9,10,10,%%k
  8. ) else (
  9. echo;%%a,%%b-%%c,%%d,%%e,%%f,%%g,%%h,%%i,%%j,%%k
  10. )
  11. ))>222.txt
  12. move /y 222.txt 111.txt
  13. ping -n 3600 127.1>nul
  14. goto :loop
复制代码
发表于 2021-8-22 23:18:14 | 显示全部楼层
回复 2# idwma


放在任务计划里面执行比较好。ping + loop 太浪费系统资源
  1. @echo off
  2. (for /f "tokens=1-9* delims=," %%a in ('type "D:\Test\1.txt"') do (
  3.     if "%%b" equ "3439-1000" (
  4.         echo %%a,%%b,2,4,5,7,9,10,10,%%j
  5.     ) else if "%%b" equ "7686-19" (
  6.         echo %%a,%%b,2,4,5,7,9,10,10,%%j
  7.     ) else (
  8.         echo %%a,%%b,%%c,%%d,%%e,%%f,%%g,%%h,%%i,%%j
  9.     )
  10. ))>"D:\Test\2.txt"
复制代码
 楼主| 发表于 2021-8-23 16:37:11 | 显示全部楼层
回复 2# idwma


如果是多个txt且带RS文件名  比如RS2021082201111.txt  RS2021082202112.txt  RS2021082203111.txt   原来的TXT移动到其他文件夹或者删除
发表于 2021-8-23 16:47:15 | 显示全部楼层
回复 4# xiuan
  1. @echo off
  2. for /f "delims=" %%i in ('dir/b/s "D:\Test\rs*.txt"') do (
  3. (for /f "tokens=1-9* delims=," %%a in ('type "%%i"') do (
  4.     if "%%b" equ "3439-1000" (
  5.         echo %%a,%%b,2,4,5,7,9,10,10,%%j
  6.     ) else if "%%b" equ "7686-19" (
  7.         echo %%a,%%b,2,4,5,7,9,10,10,%%j
  8.     ) else (
  9.         echo %%a,%%b,%%c,%%d,%%e,%%f,%%g,%%h,%%i,%%j
  10.     )
  11. ))>"%%i.txt"
  12. del %%i
  13. )
复制代码
 楼主| 发表于 2021-8-23 22:42:00 | 显示全部楼层
回复 5# idwma


    功能没问题,但是新的文件名称多了.txt
发表于 2021-8-23 23:18:57 | 显示全部楼层
回复 6# xiuan


5楼第12行改成这样试试:
move /y "%%i.txt" "%%i"
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 22:36 , Processed in 0.031068 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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