Board logo

标题: [文本处理] 批量修改文件内容? [打印本页]

作者: 滴血雄鹰    时间: 2020-3-19 15:11     标题: 批量修改文件内容?

本帖最后由 滴血雄鹰 于 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
作者: wujunkai    时间: 2020-3-20 20:33

注意:该板块不是“帮你做事”而是“教你怎么做”,如果想要现成的代码或急需解决问题,请移步『有偿求助区』发帖
                
作者: netdzb    时间: 2020-3-20 22:18

回复 2# wujunkai


这种现象版主是否管理一下,有的人一行代码都没有,跑来提各种各样的要求。
难怪每天的帖子少了很多。
作者: wujunkai    时间: 2020-3-22 10:02

回复 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

回复  滴血雄鹰 考虑到扩展性,把算法封装了一下。
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)
作者: wujunkai    时间: 2020-3-22 11:52

回复 5# 滴血雄鹰


    剩下的请自行解决,毕竟我不知道你的实际需求是什么。。。。




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