[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】请问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:我的意思是整套批量处理,而不是挨个儿改完后另存

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. md Newfiles
  4. for %%i in (a*.txt) do (
  5.     (for /f "delims=" %%a in ('type "%%i"') do (
  6.         set "str=%%a"
  7.         echo,!str:xxx=yyy!
  8.     ))>"Newfiles\%%i"
  9. )
复制代码
1

评分人数

    • aceamuro: 有效果,而且执行速度很快,非常感谢!!技术 + 1

TOP

本帖最后由 aceamuro 于 2022-2-17 15:55 编辑

回复 2# qixiaobin0715
有点没看明白,do后面为啥加两个括号?
另外如果a*.txt带有路径应该怎么写?直接填(不带空格)的话无法运行

TOP

回复 3# aceamuro
比如要处理的文本文件路径为D:\abc,可以在2楼代码第2、3行之间增加一行代码:
  1. cd /d "D:\abc"
复制代码
1

评分人数

TOP

本帖最后由 qixiaobin0715 于 2022-2-18 09:12 编辑

回复 3# aceamuro
代码第5行前面的左括号是与第8行后面的右括号相对应的,作用是将其间for循环显示的内容(第8行)一次性重定向到一个文本文件中。
举个例子:
  1. (
  2. echo,a
  3. echo,b
  4. echo,c
  5. ....
  6. echo,z
  7. )>a.txt
复制代码
  1. echo,a>a.txt
  2. echo,b>>a.txt
  3. echo,c>>a.txt
  4. ....
  5. echo,z>>a.txt
复制代码
第一组代码与2楼代码类似,是把26个字母一个一行的一次性写入a.txt文件中;
第二组代码是依次将26个字母写入(一次写入一行)a.txt文件中。
写入内容越多,第一组相对第二组代码,其效率就越高。

TOP

回复 3# aceamuro


提升代码效率的常见方法
https://mp.weixin.qq.com/s/VZk0TmYUpFdCoWK9ZpgL0Q
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表