标题: [文本处理] 【已解决】请问BAT脚本怎样批量替换很多文件中的某一串字符? [打印本页]
作者: aceamuro 时间: 2022-2-17 10:25 标题: 【已解决】请问BAT脚本怎样批量替换很多文件中的某一串字符?
本帖最后由 aceamuro 于 2022-2-17 16:45 编辑
现在有文件
a1.txt
a2.txt
am.txt
an.txt
也就是a*.txt,每个文件中都有一串或多串相同的字符xxx。
现在有两个问题:
1.假如我想把所有文件的所有xxx字符全部替换成YYY,并且不改变文件名(路径可变可不变),请问要怎么写?
2.问题1中如果不是替换成YYY,而是替换成另一个文件b.txt中的内容,请问要怎么写?
PS:我的意思是整套批量处理,而不是挨个儿改完后另存
作者: qixiaobin0715 时间: 2022-2-17 11:06
- @echo off
- setlocal enabledelayedexpansion
- md Newfiles
- for %%i in (a*.txt) do (
- (for /f "delims=" %%a in ('type "%%i"') do (
- set "str=%%a"
- echo,!str:xxx=yyy!
- ))>"Newfiles\%%i"
- )
复制代码
作者: aceamuro 时间: 2022-2-17 15:22
本帖最后由 aceamuro 于 2022-2-17 15:55 编辑
回复 2# qixiaobin0715
有点没看明白,do后面为啥加两个括号?
另外如果a*.txt带有路径应该怎么写?直接填(不带空格)的话无法运行
作者: qixiaobin0715 时间: 2022-2-17 16:12
回复 3# aceamuro
比如要处理的文本文件路径为D:\abc,可以在2楼代码第2、3行之间增加一行代码:复制代码
作者: qixiaobin0715 时间: 2022-2-18 09:08
本帖最后由 qixiaobin0715 于 2022-2-18 09:12 编辑
回复 3# aceamuro
代码第5行前面的左括号是与第8行后面的右括号相对应的,作用是将其间for循环显示的内容(第8行)一次性重定向到一个文本文件中。
举个例子:- (
- echo,a
- echo,b
- echo,c
- ....
- echo,z
- )>a.txt
复制代码
- echo,a>a.txt
- echo,b>>a.txt
- echo,c>>a.txt
- ....
- echo,z>>a.txt
复制代码
第一组代码与2楼代码类似,是把26个字母一个一行的一次性写入a.txt文件中;
第二组代码是依次将26个字母写入(一次写入一行)a.txt文件中。
写入内容越多,第一组相对第二组代码,其效率就越高。
作者: Batcher 时间: 2022-2-18 10:26
回复 3# aceamuro
提升代码效率的常见方法
https://mp.weixin.qq.com/s/VZk0TmYUpFdCoWK9ZpgL0Q
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |