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

[文本处理] 批量修改文件内容?

[复制链接]
发表于 2020-3-19 15:11:54 | 显示全部楼层 |阅读模式
本帖最后由 滴血雄鹰 于 2020-3-22 09:10 编辑

如何窗口输入:
a.txt(输入a)
替换前内容(输入1)
替换后内容(输入10)


@echo off
for /f "delims=" %%i in ('dir /s/b a.txt') do (
        for /f "delims=" %%a in ('type "%%~fi"') do (
                set "foo=%%a"
                call,set foo=%%foo:替换前内容=替换后内容%%
                call,echo/%%foo%%>>"%%~fi._"
)
move "%%~fi._" "%%~fi"
)
exit
发表于 2020-3-20 20:33:42 | 显示全部楼层
注意:该板块不是“帮你做事”而是“教你怎么做”,如果想要现成的代码或急需解决问题,请移步『有偿求助区』发帖
                
发表于 2020-3-20 22:18:47 | 显示全部楼层
回复 2# wujunkai


这种现象版主是否管理一下,有的人一行代码都没有,跑来提各种各样的要求。
难怪每天的帖子少了很多。
发表于 2020-3-22 10:02:19 | 显示全部楼层
回复 1# 滴血雄鹰
  1. @echo off
  2. @setlocal enabledelayedexpansion

  3. :main
  4.     set /P file=输入文件名
  5.     set /P from=输入替换前的字符
  6.     set /P to=输入替换后的字符
  7.     call:replace %file% %from% %to%
  8. pause
  9. goto:eof

  10. :replace
  11.     rem 替换文件中特定字符串并保存
  12.     rem %~1:文件名 ; %~2:替换前 ; %~3:替换后 ;%~4:限定替换次数(未使用)
  13.     call:fopen %1 replace_temp
  14.     cd.>"%~1"
  15.     set /A replace_len=fopen_len-1
  16.     for /L %%i in (0,1,%replace_len%) do (
  17.         set get=!replace_temp[%%i]!
  18.         if "!get!"=="" (
  19.             echo.>>"%~1"
  20.         ) else (
  21.             echo !get:%~2=%~3!>>"%~1"
  22.         )
  23.     )
  24. goto:eof

  25. :fopen
  26.     rem %~1 为读取文件名,%~2为储存的变量名
  27.     rem 采用数组的方式储存,不储存换行符
  28.     rem 若无%~2,使用%~n1作为储存的变量名
  29.     set fopen_file=%~1
  30.     if "%~2"=="" (set fopen_vale=%~n1) else (set fopen_vale=%~2)
  31.     set fopen_len=0
  32.     for /F "tokens=1* delims=:" %%i in ('findstr /n .* %fopen_file%') do (
  33.         set %fopen_vale%[!fopen_len!]=%%j
  34.         set /A fopen_len+=1
  35.     )
  36. goto:eof
复制代码
考虑到扩展性,把算法封装了一下。
 楼主| 发表于 2020-3-22 11:10:59 | 显示全部楼层
回复  滴血雄鹰 考虑到扩展性,把算法封装了一下。
wujunkai 发表于 2020-3-22 10:02



    先谢谢您的解答!不好意思,上面我说错了,文件是位于:
d:\1\a.txt
d:\2\a.txt
d:\3\a.txt
d:\4\a.txt

如何窗口输入:
a.txt(输入a)

是指:
选择1:d:\1\a.txt
选择2:d:\2\a.txt
选择3:d:\3\a.txt
选择4:d:\4\a.txt

输入后:

替换前内容(输入1)
替换后内容(输入10)
发表于 2020-3-22 11:52:45 | 显示全部楼层
回复 5# 滴血雄鹰


    剩下的请自行解决,毕竟我不知道你的实际需求是什么。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 15:51 , Processed in 0.018601 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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