标题: [文本处理] 批量修改文件内容? [打印本页]
作者: 滴血雄鹰 时间: 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# 滴血雄鹰 - @echo off
- @setlocal enabledelayedexpansion
-
- :main
- set /P file=输入文件名
- set /P from=输入替换前的字符
- set /P to=输入替换后的字符
- call:replace %file% %from% %to%
- pause
- goto:eof
-
- :replace
- rem 替换文件中特定字符串并保存
- rem %~1:文件名 ; %~2:替换前 ; %~3:替换后 ;%~4:限定替换次数(未使用)
- call:fopen %1 replace_temp
- cd.>"%~1"
- set /A replace_len=fopen_len-1
- for /L %%i in (0,1,%replace_len%) do (
- set get=!replace_temp[%%i]!
- if "!get!"=="" (
- echo.>>"%~1"
- ) else (
- echo !get:%~2=%~3!>>"%~1"
- )
- )
- goto:eof
-
- :fopen
- rem %~1 为读取文件名,%~2为储存的变量名
- rem 采用数组的方式储存,不储存换行符
- rem 若无%~2,使用%~n1作为储存的变量名
- set fopen_file=%~1
- if "%~2"=="" (set fopen_vale=%~n1) else (set fopen_vale=%~2)
- set fopen_len=0
- for /F "tokens=1* delims=:" %%i in ('findstr /n .* %fopen_file%') do (
- set %fopen_vale%[!fopen_len!]=%%j
- set /A fopen_len+=1
- )
- 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://www.bathome.net/) |
Powered by Discuz! 7.2 |