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

说实话,用批处理去做这个不是很好做,批处理处理txt文本的时候,你的txt文本必须是ANSI格式编码,否则会出现乱码。所以还需要先批量转换你的txt编码为ANSI,然后再替换。至于替换的批处理,倒是好写,不过批量转换编码,需要用到增强型的批处理脚本,你这个需求反而变得复杂了。以我目前的水平,写不了编码转换的部分,需要研究论坛里“批处理之家在线 HTA 脚本”,这个我还没有研究过。

TOP

  1. @echo off
  2. echo. & echo 注意,被处理的文本编码必须是ANSI编码方式,UTF-8编码或其他编码的文本是无法通过批处理替换其内的内容的。
  3. echo. & echo 本批处理可以一次性处理多个文件,处理后的文本会生成副本文件,原文件不会删除
  4. echo. & echo 批处理默认处理txt文本,其他文件请修改代码
  5. echo. & set /p "str1=请输入被替换的文本:"
  6. for /f "delims=" %%i in ('dir /b *.txt') do (
  7. (for /f "delims=" %%j in (%%i) do (
  8. set "str3=%%j"
  9. setlocal enabledelayedexpansion
  10. set "str4=!str3:%str1%=%%~ni!"
  11. echo !str4!
  12. setlocal disabledelayedexpansion
  13. )
  14. )>>"%%~ni 副本.txt"
  15. )
  16. echo. & echo 替换完成,已在批处理所在目录生成新的副本文件
  17. echo. & pause
复制代码
至于转换编码的部分,你自己找一下软件来进行转码吧。
1

评分人数

    • 8532200: 楼下已经解决了,,感谢你的回复技术 + 1

TOP

  1. @echo off
  2. echo. & echo 注意,被处理的文本编码必须是ANSI编码方式,UTF-8编码或其他编码的文本是无法通过批处理替换其内的内容的。
  3. echo. & echo 本批处理可以一次性处理多个文件,处理后的文本会生成副本文件,原文件不会删除
  4. echo. & echo 批处理默认处理txt文本,其他文件请修改代码
  5. echo. & set /p "str1=请输入被替换的文本:"
  6. for /f "delims=" %%i in ('dir /b *.txt') do (
  7. (for /f "delims=" %%j in (%%i) do (
  8. set "str3=%%j"
  9. setlocal enabledelayedexpansion
  10. set "str4=!str3:%str1%=%%~ni!"
  11. echo !str4!
  12. setlocal disabledelayedexpansion
  13. )
  14. )>>"%%~ni 副本.txt"
  15. )
  16. echo. & echo 替换完成,已在批处理所在目录生成新的副本文件
  17. echo. & pause
复制代码
将utf8转码为ansi,这个可以有现成的软件,自己搜一下吧。

TOP

回复 6# 8532200


    你输入www就可以了,是不是输入错了

TOP

回复 6# 8532200


    另外,你需要确认你的txt文本的编码是ANSI,如果是UTF-8是不能正常替换的

TOP

回复 9# 8532200


    你直接放2个文本上来,我修改一下代码

TOP

回复 11# 8532200


    压缩文件需要密码

TOP

  1. @echo off
  2. echo. & echo 注意,被处理的文本编码必须是ANSI编码方式,UTF-8编码或其他编码的文本是无法通过批处理替换其内的内容的。
  3. echo. & echo 本批处理可以一次性处理多个文件,处理后的文本会生成副本文件,原文件不会删除
  4. echo. & echo 本批处理默认处理txt文本,不需要指定格式
  5. echo. & set /p "str1=请输入被替换字符串:"
  6. echo. & echo 正在替换中,请稍等。。。。。。
  7. for /f "delims=" %%i in ('dir /b *.txt') do (
  8. (for /f "delims=" %%j in (%%i) do (
  9. set "str3=%%j"
  10. call call set "str4=%%%%str3:%%str1%%=%%~ni%%%%"
  11. call echo %%str4%%
  12. )
  13. )>>"%%~ni 副本.txt"
  14. )
  15. echo. & echo 替换完成,已在批处理所在目录生成新的副本文件
  16. echo. & pause
复制代码
ok了,我没想到你要替换的是小说,里面的文本数量太多了,超出了setlocal递归数量,现在换了。已经可以了。
1

评分人数

    • 8532200: 目前已经实测成功。非常感谢你的回复技术 + 1

TOP

返回列表