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

[文本处理] 如何批量替换指定文件夹特定文件的文本(包含特殊字符)?

[复制链接]
发表于 2019-10-14 21:17:13 | 显示全部楼层 |阅读模式
  1. @echo off
  2. set oldStr=\\127.0.0.1\projects$\dll\
  3. set newStr=..\..\..\dll\
  4. set /p DirectoryPath=请输入或拖入源文件夹路径:
  5. set /p ToUpdateType=请输入要修改的文件类型:
  6. rem .......................%oldStr%=%newStr%............................................
  7. pause
复制代码
如何批量修改指定目录,指定文件类型的文本,例如:把\\127.0.0.1\projects$\dll\替换为..\..\..\dll\
 楼主| 发表于 2019-10-15 09:37:34 | 显示全部楼层
本帖最后由 xzwcn 于 2019-10-15 09:44 编辑
  1. @echo off

  2. set /p directoryPath=Pleast input Directory Path:
  3. ::set /p fileType=Pleast input File Type:
  4. set fileType=csproj
  5. set strOld=\\127.0.0.1\projects$\dll\
  6. set strNew=..\..\..\dll\
  7. echo ***** Replace "%strOld%" as "%strNew%" *****
  8. setlocal enabledelayedexpansion
  9. for /f "tokens=*" %%i in ('dir %directoryPath%\*.%fileType% /b /s') do (
  10.     set "var=%%i"
  11.     if not !var!.==. (
  12.                 rem 单个文件一行行处理,将旧字段替换成新字段
  13.                 for /f "tokens=*" %%j in (!var!) do (
  14.                         set "tmp=%%j"
  15.                         if not !tmp!.==. (
  16.                           set "tmp=!tmp:%strOld%=%strNew%!"
  17.                           rem 将处理后的每一行记录追加到temp.txt文件中
  18.                           echo !tmp!>>temp.txt
  19.                         )
  20.                 )
  21.                 rem 在单个文件的每一行经过替换操作后,将处理后的文本从temp.txt临时文件剪贴到目标处理文件中(剪贴后临时文件会自动删除)
  22.                 move temp.txt !var!
  23.                
  24.                 echo !var!
  25.     )
  26. )

  27. pause
复制代码
这样写,基本测试能过,有明显的Bug么?

参考资料:
DOS001 用批处理批量替换文件中的某个字符串(本地单元测试通过,部分功能有待优化,欢迎指正) - Dylaniou的博客 - CSDN博客
https://blog.csdn.net/u010425839/article/details/76595665
发表于 2019-10-15 10:50:54 | 显示全部楼层
回复 2# xzwcn


    你把特殊字符挨个测试一遍就知道有没有bug啦
 楼主| 发表于 2019-10-27 09:24:51 | 显示全部楼层
回复 3# Batcher

批处理的编码与要替换的文件编码不同,可能会乱码
发表于 2019-10-27 21:30:30 | 显示全部楼层
回复 4# xzwcn


    如果你需要考虑编码的问题,建议改用 PowerShell 试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 10:11 , Processed in 0.018470 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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