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

[文本处理] [已解决]批处理替换文本里的内容都是一行行的换,有什么办法让他快起来吗?

  1. cd /d %~dp0
  2. setlocal enabledelayedexpansion
  3. set strNew=
  4. for /f "delims=*" %%m in ('type "C:\1.txt"') do (
  5. for /f "delims=*" %%a in ('dir/b/s *.htm *.txt') do (
  6. for /f "delims=*" %%i in ('type "%%a"') do (
  7. set var=%%i
  8. set "var=!var:%%m=%strNew%!"
  9. if defined var (
  10. echo !var!!>>%%a.bk
  11. )
  12. )
  13. move "%%a.bk" "%%a"
  14. )
  15. )
复制代码
我是想用C:\1.txt里每一换去替换 当前文件夹*.htm *.txt的所有文件里的内容 但是需要每一行去替换太慢了,有没有快点的方法呢
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 2# amwfjhh


    主要是不知道改哪里
因为把单个行给变量了,只有单个行空的时候报这个错,可我不知道怎么改了

TOP

回复 4# zaqmlp
主要是去掉这个错误变成空就行

TOP

本帖最后由 miqilaosu 于 2019-5-19 13:53 编辑

谢谢客位指导终于想明白了空行我不执行就行了,进入了误区
cd /d %~dp0
setlocal enabledelayedexpansion
set strNew=
for /f "delims=*" %%m in ('type "C:\1.txt"') do (
for /f "delims=*" %%a in ('dir/b/s *.htm *.txt') do (
for /f "delims=*" %%i in ('type "%%a"') do (
set var=%%i
set "var=!var:%%m=%strNew%!"
if defined var (
echo !var!!>>%%a.bk
)
)
move "%%a.bk" "%%a"
)
)

TOP

回复 9# amwfjhh

之前的问题解决了,但是发现批处理一行行替换太慢了,有没有什么快速的方法替换呢

TOP

本帖最后由 miqilaosu 于 2019-5-20 09:35 编辑

回复 13# Batcher


    谢谢@Batcher大神,好利害,一下快了几十倍,原来还可以这样写,又学到了一种方法,以前跟本没想过还可以用ECHO连续输出,最后写到TXT里
我是想批量替换同一目录下的网站模板代码内容(比如当前页源码),都是html,txt文件,

TOP

返回列表