Board logo

标题: [文本处理] 【已解决】求批处理:替换文本中指定的文字 [打印本页]

作者: yyz219    时间: 2022-1-7 13:18     标题: 【已解决】求批处理:替换文本中指定的文字

本帖最后由 yyz219 于 2022-1-22 21:38 编辑
  1. 设文本  a.txt  里面内容:
  2. D:\桌面\Desktop\哈哈.reg
  3. ***************************
  4. 希望的结果是,文本里面内容变为:
  5. D:\桌面\Desktop\哈哈.cmd
  6. 【需要替换的是:最好3个字符(其它内容要保持不变)】
  7. 谢谢
  8. ++++++++++++++++++++++++++++++++++++++++
  9. 问题解决了:
  10. 方法1.(很快)
  11. @echo off
  12. ::下面这行设置你要替换的文件名,这里是159.txt,改成你自己的
  13. ::将 .reg 替换为 .bat
  14. set file=159.txt
  15. if exist 259.txt del 259.txt
  16. for /f "tokens=*" %%i in (%file%) do call :begin ^"%%i^"
  17. goto :eof
  18. :begin
  19. set var=%~1
  20. if defined var set var=%var:.reg=.bat%
  21. if defined var echo %var% >> 259.txt
  22. exit
  23. 方法2.(慢慢的)
  24. @echo off
  25. set "file=a.txt"
  26. powershell "(gc '%file%') -replace '(.*\.)reg','$1cmd'">b.txt
复制代码

作者: MengHanLOVE    时间: 2022-1-7 14:50

如果是文件名后缀修改的话可以使用以下bat
  1. rename *.reg *.bat
  2. 也可以是这个
  3. ren *.reg *.bat
复制代码
如果是文件内的内容我还不会呢...
作者: qixiaobin0715    时间: 2022-1-7 16:35

示范要典型,否则会产生误解。是要修改扩展名吗?
作者: smss    时间: 2022-1-7 16:58

ANSI编码
  1. @Echo off&SetLocal EnableDelayedExpansion
  2. for /f "delims=" %%i in (a.txt)do set n=%%i&if !n:~-3!==reg echo !n:~,-3!cmd>b.txt
  3. pause
复制代码

作者: Nsqs    时间: 2022-1-7 17:58

  1. @echo off
  2. set "file=a.txt"
  3. powershell "(gc '%file%') -replace '(.*\.)reg','$1cmd'">b.txt
复制代码

作者: yyz219    时间: 2022-1-7 18:58

回复 5# Nsqs


    成功。就是有一点慢

非常感谢
作者: yyz219    时间: 2022-1-9 07:52

回复 5# Nsqs


     真的可以 谢谢




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